我得到的字符串结构如下:““ \ x0C \ x00Maximilianus \ xf4 \ x01”`,我想动态提取前两个字节和后两个字节并将其转换为小数。为此的编码应为UTF-8 little-endian unsigned。
“ \ x0C \ x00”
等于12
“ \ xf4 \ x01”
等于500
我找不到任何能够做到这一点的功能。另外,替换字符串中的“ \ x”不起作用,因为我无法使用转义字符进行操作。
有什么想法吗?
问题来源:stackoverflow
您可以使用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)
回答来源:stackoverflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。