开发者社区> 问答> 正文

Python将十六进制字符串转换为十进制值

我得到的字符串结构如下:““ \ x0C \ x00Maximilianus \ xf4 \ x01”`,我想动态提取前两个字节和后两个字节并将其转换为小数。为此的编码应为UTF-8 little-endian unsigned。

“ \ x0C \ x00”等于12

“ \ xf4 \ x01”等于500

我找不到任何能够做到这一点的功能。另外,替换字符串中的“ \ x”不起作用,因为我无法使用转义字符进行操作。

有什么想法吗?

问题来源:stackoverflow

展开
收起
is大龙 2020-03-25 00:24:16 3521 0
1 条回答
写回答
取消 提交回答
  • 您可以使用struct来获取数字。

    使用表格式字符,您可以看到您需要“ h”来转换2个字节的整数。 您最终可以使用“ <h”来确保它将使用little-endian

    import struct
    
    # convert to bytes
    data = "\x0C\x00Maximilianus\xf4\x01".encode('latin1')
    
    # get short integer
    number = struct.unpack('<h', data[:2])[0]
    print('number:', number)
    
    # skip number
    data = data[2:]
    
    # get string
    #text = struct.unpack(f'{number}s', data[:number])[0] # use  \` number \`  to create  \` "12s" \` 
    #print('text:', text.decode())
    print('text:', data[:number].decode())
    
    # skip string
    data = data[number:]
    
    # get short integer
    number = struct.unpack('<h', data[:2])[0]
    print('number:', number)
    
      • BTW:*它看起来类似于MessagePack,所以也许有一个特殊的模块,但是我不知道。

    回答来源:stackoverflow

    2020-03-25 00:24:25
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载