Python の文字列を、符号なしおよび符号付きの 8、16、32、および 64 ビットの int、double、float、string などの他の型に変換する必要があります。
これどうやってするの?
int
次の関数を使用して、文字列を 32 ビットの符号付き整数に変換できます。
str = "1234"
i = int(str) // i is a 32-bit integer
文字列が整数を表していない場合、ValueError
例外が発生します。ただし、文字列が整数を表しているが、その整数が 32 ビットの符号付き int に収まらない場合は、long
代わりに型のオブジェクトを実際に取得することに注意してください。
次に、いくつかの簡単な計算を使用して、それを他の幅と符号に変換できます。
s8 = (i + 2**7) % 2**8 - 2**7 // convert to signed 8-bit
u8 = i % 2**8 // convert to unsigned 8-bit
s16 = (i + 2**15) % 2**16 - 2**15 // convert to signed 16-bit
u16 = i % 2**16 // convert to unsigned 16-bit
s32 = (i + 2**31) % 2**32 - 2**31 // convert to signed 32-bit
u32 = i % 2**32 // convert to unsigned 32-bit
s64 = (i + 2**63) % 2**64 - 2**63 // convert to signed 64-bit
u64 = i % 2**64 // convert to unsigned 64-bit
float
次の関数を使用して、文字列を浮動小数点に変換できます。
f = float("3.14159")
Python float は、他の言語で と呼ばれるものdouble
です。つまり、これらは 64 ビットです。Python には 32 ビットの float はありません。
次の型は、ほとんどの場合、そもそも Python には存在しません。Python では、文字列は int、long、または float に変換されます。
そもそも Python に関係のない変換を求めています。これは、あなたが求めたタイプとそれに相当する Python のリストです。
unsigned および signed int 64 ビット、 long
ダブル、 フロート
私は以下が何であるかわからないので、Python に相当するものを知りません。
重要なすべての変換が既にあります: int()
、long()
およびfloat()
。
Python には単一のint
型しかありません。文字列を に変換するには、次のようint
に使用します。int()
>>> str = '123'
>>> num = int(str)
>>> num
123
編集:フロートに変換するにfloat()
は、まったく同じ方法で使用します。
これ以上の情報がなければ、必ずしもうまく答えられるとは思いません。他の人が言ったように、Python の整数には int と long しかありません。この言語は、下位レベルのプログラミング言語のビット幅と符号の原型に準拠していません。
Python 内で完全に操作している場合は、おそらく間違った質問をしている可能性があります。必要なことを行うためのより良い方法がある可能性があります。
たとえば、C コードやネットワークを介して相互運用している場合、これを行う方法があり、以前の投稿への回答がその手段を非常に簡単にカバーしているように見えます。
modbus から 16 ビットの符号付き 2 の補数として値が渡されるという問題が発生しました。これを符号付きの数値に変換する必要がありました。私はこれを書いてしまいましたが、うまくいくようです。
# convert a 32 bit (prob) integer as though it was
# a 16 bit 2's complement signed one
def conv_s16(i):
if (i & 0x8000):
s16 = -(((~i) & 0xFFFF) + 1)
else:
s16 = i
return s16