Python 字节字符串转换为长值
长值的字节字符串: 我有一个十六进制值的字符串,比如,',ff,fe,d0,ea',如何将它们转换为(大端)长值?代码段:Python 字节字符串转换为长值,python,string,python-2.7,bytearray,Python,String,Python 2.7,Bytearray,长值的字节字符串: 我有一个十六进制值的字符串,比如,',ff,fe,d0,ea',如何将它们转换为(大端)长值?代码段: dataStr = ',ff,fe,d0,ea' dataVal = struct.unpack('>l', '\xff\xfe\xd0\xea')[0] print dataStr, ' = ', dataVal # prints out ,ff,fe,d0,ea = -77590 我认为\是一个无法打印的字符,所以我相信我的问题是(给定代码片段),
dataStr = ',ff,fe,d0,ea'
dataVal = struct.unpack('>l', '\xff\xfe\xd0\xea')[0]
print dataStr, ' = ', dataVal # prints out ,ff,fe,d0,ea = -77590
我认为
\
是一个无法打印的字符,所以我相信我的问题是(给定代码片段),如何将、ff、fe、d0、ea
转换为\xff\xfe\xd0\xea
?或者任何适合于结构解压缩功能的数组值?以下将',ff,fe,d0,ea'
解码为'\xff\xfe\xd0\xea'
dataStr = ',ff,fe,d0,ea'.replace(',', r'\x').decode('string-escape')
以下代码将把',ff,fe,d0,ea'
解码为'\xff\xfe\xd0\xea'
dataStr = ',ff,fe,d0,ea'.replace(',', r'\x').decode('string-escape')
下面是一行代码,它将转换为适合解包的十六进制字符串
hexstr = "".join([chr(int(ss, 16)) for ss in dataStr.split(",") if ss])
通常,当您有这样的十六进制字符串时,您真正想要的是一个无符号整数。因此,要使用unpack实现这一点,请执行以下操作:
myval = struct.unpack(">I", hexstr)[0]
现在,结果是4294889706
但是在第一行中,你已经有了整数,所以你也可以自己移位和运算。这是你可以做到的
res = 0
for v in [int(ss, 16) for ss in dataStr.split(",") if ss]:
res <<= 8
res += v
res=0
对于v in[int(ss,16)对于dataStr.split中的ss(“,”)如果ss]:
res这是一行代码,它将转换为适合解包的十六进制字符串
hexstr = "".join([chr(int(ss, 16)) for ss in dataStr.split(",") if ss])
通常,当您有这样的十六进制字符串时,您真正想要的是一个无符号整数。因此,要使用unpack实现这一点,请执行以下操作:
myval = struct.unpack(">I", hexstr)[0]
现在,结果是4294889706
但是在第一行中,你已经有了整数,所以你也可以自己移位和运算。这是你可以做到的
res = 0
for v in [int(ss, 16) for ss in dataStr.split(",") if ss]:
res <<= 8
res += v
res=0
对于v in[int(ss,16)对于dataStr.split中的ss(“,”)如果ss]:
物件