我想获取大尾数的99997值是(2642804992),然后将答案作为长值返回

这是我在python中的代码:

v = 99997
ttm = pack('>i', v) # change the integer to big endian form
print ("%x"), {ttm}
r = long(ttm, 16) # convert to long (ERROR)
return r



  输出:%x set(['\ x00 \ x01 \ x86 \ x9d'])
  
  错误:基数为16的long()无效文字:'\ x00 \ x01 \ x86 \ x9d'


由于字符串已经是十六进制形式,为什么不转换为长字符串呢?我将如何消除此错误,以及解决该问题的方法是什么。

最佳答案

pack将返回您提供的数据的字符串表示形式。

字符串表示形式不同于长数字的以16为底的形式。注意每个数字前的\ x。

编辑:

尝试这个

ttm = pack('>I',v)
final, = unpack('<I',ttm)
print ttm


注意使用I,因此将数字视为无符号值

09-15 20:33