2017-06-29 7 views
0

私はintのnumpy配列に変換したいhexa文字列を持っています。Pythonは16進文字列の予期しない動作をデコードします

forループを使用したくないのは、numpy配列をループすることは推奨されないためです。

だから私は、次のようにします。

vector = np.fromstring(s.decode('hex'), dtype=np.uint8)

s = 'a312'ための場合は、正しいs.decode('hex')戻り'\xa3\x12'

s = 'a320'の場合は'\xa3\x20'と思われますので'\xa3 'はちょっと変わったようです

私を助けることができますか?

答えて

1

Pyhonのバイナリ文字列がで、ASCII相当語句であることがポイントです。

>>> '\x20' 
' ' 
>>> 'a320'.decode('hex') == '\xa3\x20' 
True 

:あなたはターミナルで'\x20'を記述する場合、それはスペースを出力します

Hex Dec ASCII 
20 32 (space) 

:1がASCII tableで見ることができるよう

'\x20'同等は、スペースですこれは、表現のの部分のみであることに注意してください。カーテンの後ろには、バイナリ文字列にはバイナリ値。

+0

わかりました。私はおそらく 'デコード 'は私が必要としているものではないと思う。 ''\ xa3 \ x20' 'は' s =' a320''からどのように取得できますか? – SebMa

+0

@SebMa:答えを慎重に読みましたか? '\ xa3 \ x20'が得られます。 **文字列の表現方法はすべて**です。 –

+0

あなたは正しいです、それは今日の終わりです、私は疲れ始めています。 'decode()'は私が最後にやりたいことを行い、期待される整数値を得ます: 'np.fromstring( '\ xa3'、dtype = np.uint8)[1]' – SebMa

関連する問題