2017-10-20 7 views
0

私は、Pythonでbinascii.unhexlify(initValue) が16進文字列で表されるバイナリデータを返すことを知っています。16進数の文字列で表されるバイナリデータをJava対Pythonに戻す

binascii.unhexlify(initValue)をjavaに変換しようとしています。

は、私はJavaで、次のコード行を試してみましたが、私は、その後のpythonのコード異なる結果を取得しています:私は、次の例を実行

DatatypeConverter.parseHexBinary(value); 

私の入力を - 16進数文字列:

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.why?

  1. なぜ出力を '\'記号でPythonで取得できますか?

答えて

0

結果の最初の16進数である「 '」は、符号付き文字では正確に39です。

:Pythonでは、あなたはおそらく、あなたがこのunsigned char型を取得します。このPythonコードで何をしたい

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

を得ることができます39 を取得するには、組み込み関数ORDを(「'」)を使用することができます

[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] 
関連する問題