获取Java和Python中用十六进制字符串表示的二进制数据

2024-06-28 19:25:03 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我正在尝试将binascii.unhexlify(initValue)转换为java。在

我尝试了java中的以下代码行,但得到的结果与python中的代码不同:

 DatatypeConverter.parseHexBinary(value);

我运行以下示例:

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

^{pr2}$

在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为什么我会得到不同的结果?在

  1. 为什么我在python中得到带有'\'标记的输出?在

Tags: 数据字符串代码示例bytesvalue二进制java
1条回答
网友
1楼 · 发布于 2024-06-28 19:25:03

结果的第一个十六进制“'”在有符号字符中正好是39。在python中,可以使用内置函数ord(“'”)得到39。 您可能可以在这个python代码中得到您想要的东西

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

您将得到这个无符号字符:

^{2}$

相关问题 更多 >