2017-10-20 50 views
0

我知道在python中binascii.unhexlify(initValue) 返回由十六进制字符串表示的二进制数据。获取由java中的十六进制字符串表示的二进制数据vs python

我试图将binascii.unhexlify(initValue)转换为java。

我试图用Java下面的代码行,但我得到不同的结果,然后在Python代码:

DatatypeConverter.parseHexBinary(value); 

我运行下面的例子:

我输入 - 十六进制字符串:

value = '270000f31d32d1051400000000000000000000000006000000000000000000000000000000000000' 

当在python中运行时:

result = binascii.unhexlify(value) 

我越来越:

result = "'\x00\x00\xf3\x1d2\xd1\x05\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" 
在Java运行时

byte[] bytes = DatatypeConverter.parseHexBinary(value); 

我越来越:

bytes = [39, 0, 0, -13, 29, 50, -47, 5, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 

1.为什么我得到不同的结果?

  1. 为什么我用'\'标记获得python输出?

回答

0

结果的第一个十六进制“”“在signed char中恰好为39。在Python中,你可以使用内置的功能ORD(““”),以获得39 你也许可以得到你想要的东西在这个Python代码

value = '270000f31d32d1051400000000000000000000000006000000000000000000000000000000000000' 
result = binascii.unhexlify(value) 
bytes = [ord(x) for x in result] 

你会得到这个无符号的字符:

[39, 0, 0, 243, 29, 50, 209, 5, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 
相关问题