【发布时间】:2015-07-02 22:16:17
【问题描述】:
我有要解码的数据及其在 Windows-1252 中的数据,基本上我将代码发送到套接字并将其发回,我必须解码消息并使用 IEEE-754 从中获取某个值但我似乎可以弄清楚所有这些编码的东西。这是我的代码。
def printKinds ():
test = "x40\x39\x19\x99\x99\x99\x99\x9A"
print (byt1Hex(test))
test = byt1Hex(test).replace(' ', '')
struct.unpack('<d', binascii.unhexlify(test))
print (test)
printKinds()
def byt1Hex( bytStr ):
return ' '.join( [ "%02X" % ord( x ) for x in bytStr ] )
所以我使用它,然后我必须从中获得价值。但它不起作用,我不知道为什么。
我得到的当前输出是
struct.unpack('<d', binascii.unhexlify(data))
struct.error: unpack requires a bytes object of length 8
我正在寻找的预期输出错误是 25.1 但是当我对其进行编码时,它实际上将字符串更改为错误的值,所以当我这样做时:
print (byt1Hex(data))
我希望得到这个。
40 39 19 99 99 99 99 9A
但我实际上得到了这个
78 34 30 39 19 99 99 99 99 9A
【问题讨论】:
-
提供一些我们可以实际运行的代码。向我们展示 byte1Hex 函数。
-
什么不起作用?什么是预期输出?什么是实际输出?
byt1Hex是做什么的? -
将 cp1252 编码的文本解释为 IEEE-754 双精度值几乎没有意义:
struct.unpack('!d', 'abcdefgh'.encode('cp1252')) -
为什么要把一个字节串转成十六进制串,却马上又转回来?
-
我不确定我是新手,基本上我的过程是让数据解码,然后使用 IEEE-754 进行转换
标签: python encoding binary decoding