Python 编码问题
Python Encoding Issues
我有我想解码的数据,它在 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
你有:
test = "x40\x39\x19\x99\x99\x99\x99\x9A"
你需要:
test = "\x40\x39\x19\x99\x99\x99\x99\x9A"
>>> import struct
>>> struct.pack('!d', 25.1)
b'@9\x19\x99\x99\x99\x99\x9a'
>>> struct.unpack('!d', _) #NOTE: no need to call byt1hex, unhexlify
(25.1,)
您通过网络发送、接收字节。不需要 hexlify/unhexlify 他们;除非协议要求(那么你应该在问题中提到协议)。
我有我想解码的数据,它在 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
你有:
test = "x40\x39\x19\x99\x99\x99\x99\x9A"
你需要:
test = "\x40\x39\x19\x99\x99\x99\x99\x9A"
>>> import struct
>>> struct.pack('!d', 25.1)
b'@9\x19\x99\x99\x99\x99\x9a'
>>> struct.unpack('!d', _) #NOTE: no need to call byt1hex, unhexlify
(25.1,)
您通过网络发送、接收字节。不需要 hexlify/unhexlify 他们;除非协议要求(那么你应该在问题中提到协议)。