2016-08-17 17 views
-3

私は現在、実際に他のデータ型を表す整数配列を取り出し、正しいデータ型に変換しようとしています。整数配列を他の型に変換する方法は?

たとえば、整数配列[1196773188,542327116]がある場合、この整数配列は他の関数の文字列を表し、変換し、文字列 "DOUGLAS"を表すことがわかります。最初の数字は16進数0x47554F44に変換され、2番目の数字は16進数0x2053414Cを表します。 16進数から文字列へのコンバーターを使用すると、これらはストリング 'GOUD'と 'SAL'にそれぞれ対応し、DOUGLASをリトルエンディアンで表記します。文字が配列の個々の要素の後方にある方法は、おそらく私が間違っているかもしれないが、litteのエンディアン形式で格納されているバイトから生じる可能性があります。

これらの整数配列は、文字列、ブール値、および浮動小数点数を含む多くのデータ型を表すことができます。

私はPython 2.7を使用する必要があるため、残念ながらbytes関数を使用することはできません。

整数配列を対応するデータ型に変換する簡単な方法はありますか?

+5

どのように "DOUGLAS"を表す整数のリストですか?文字列と整数のリストの間に自然なデフォルトの対応はありません。ほとんどの場合、この変換を実行するには、あなたが私たちに語っていない情報と、保存していないかもしれない情報が必要です(この場合、これは失われた原因です)。 – user2357112

+1

最初にリストがあるようです: 'type([1196773188、542327116])' - > ''第2の方法は、あるデータを別のものに変換する方法です。それ。 '[1196773188、542327116]'がどのように '' DOUGLAS ''に変換されるかのルールを知っていれば、私は同じ変換プロセスが他のデータと連動すると思います。私は本当に相関関係は見ませんが。 –

+0

整数が "DOUGLAS"に翻訳される理由を説明するために編集 – GenericAlias

答えて

2

構造体モジュールは、このような異なる種類の間で変換するときに行くための最善の方法であると思わ:

import struct  

bufferstr = "" 
dougarray = [1196773188, 542327116] 
for num in dougarray: 
    bufferstr += struct.pack("i", num) 

print bufferstr # Result is 'DOUGLAS' 

この時点から、我々は簡単に私たちは構造体を使用したい任意のデータ型に「DOUGLAS」を変換することができますに。 unpack():

print struct.unpack("f", bufferstr[0:4]) # Result is (54607.265625) 

ただし、一度に特定のバイト数のみをアンパックすることができます。すべての提案をありがとう!

関連する問題