2012-04-11 8 views
2

64ビットの数値を符号付きでmsgpackでアンパックします。それをどうすれば符号なしとして再解釈できますか?あなたはビットいじるを好む場合Pythonで署名されていないlong型の署名付きコードを再入力

+0

@Marcin NUM <0の場合:NUM = struct.unpack( " Will

+0

注符号なし整数なので、整数範囲の上半分と下半分を 'decimal'オブジェクトや' long'オブジェクトに追加する前に、これらの半分を抽出するなど、少し巧妙なやり方をしなければなりません。 – Marcin

答えて

3

どの程度

if x < 0: 
    x += 2 ** 64 

または、

x &= 2 ** 64 - 1 
2

あなたはこのような何かを意味ですか?

>>> struct.unpack('L', struct.pack('l', -2235234523)) 
(18446744071474317093L,) 
+1

[これは32ビットボックスでは機能しません。](http://ideone.com/OySSt) –

関連する問題