1

私は次のものを持っています:

ビットストリームから 30 ビットを読み取ります。

MMSI = b.readlist('uint:30')

値が高くなる場合を除いて、これは正常に機能しているようです。

MMSI = b.readlist('uint:30')
p = 972128254
# repr(MMSI)[:-1]
print p
print "MMSI :"
print MMSI
if MMSI == p:

上記のコードは次を出力します。

972128254
MMSI :
[972128254L]

if MMSI ==p: 全体がスキップされるのは、何らかの理由で等しくないためです。値が max.int よりもはるかに低い理由がわかりません。

>>> import sys
>>> sys.maxint
2147483647

uint ではなく Long が返される理由がわかりません。返される値が 244123456 の場合、それは魅力的に機能します。

4

3 に答える 3

1

中間値が long の場合、値は「long」になります。したがって、たとえば次のよう2**1000 / 2**999になり2Lます。これは、呼び出したメソッドの内部に関するものであり、ほとんどのコードには影響しません。

本当の問題は、コード内の比較が int とリストを比較していることです。これは、やりたいことではありません。単一のアイテムを返すのreadではなくメソッドを使用するか、返されたリストの最初の要素を取得できます。readlistif MMSI[0] == p:

于 2014-09-16T13:10:42.903 に答える