10

負の整数 (4 バイト) があり、その 2 の補数表現の 16 進形式が必要です。

>>> i = int("-312367")
>>> "{0}".format(i)
'-312367'
>>> "{0:x}".format(i)
'-4c42f'

でも「FF…」が見たい。

4

6 に答える 6

6

方法は次のとおりです(16ビット数値の場合):

>>> x=-123
>>> hex(((abs(x) ^ 0xffff) + 1) & 0xffff)
'0xff85'

(しかし、最もエレガントな方法ではないかもしれません)

于 2010-07-13T08:58:51.093 に答える
5
>>> x = -123
>>> bits = 16
>>> hex((1 << bits) + x)
'0xff85'
>>> bits = 32
>>> hex((1 << bits) + x)
'0xffffff85'
于 2010-07-13T09:57:32.820 に答える
4

ビット文字列モジュールの使用:

>>> bitstring.BitArray('int:32=-312367').hex
'0xfffb3bd1'
于 2010-07-13T09:06:04.320 に答える
3

単純

>>> hex((-4) & 0xFF)
'0xfc'
于 2014-08-27T14:46:58.127 に答える
0

このstructモジュールは、Python 値と Python バイト オブジェクトとして表される C 構造体との間の変換を実行します。パックされたバイト オブジェクトは、個々のバイト値へのアクセスを提供します。これは、基になる (C) 整数表現を表示するために使用できます。

>>> packed = struct.pack('>i',i) # big-endian integer
>>> type(packed)
<class 'bytes'>
>>> packed
b'\xff\xfb;\xd1'
>>> "%X%X%X%X" % tuple(packed)
'FFFB3BD1'
>>> 
于 2010-07-13T11:09:01.827 に答える