使用struct的非长度特定类型(虽然我可能这样做错了)似乎不起作用:
>> x = 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000'>> y = struct.unpack('>64s',x)[0] # Unpacking as big-endian>> z = struct.pack('<64s',y) # Repacking as little-endian>> print z'ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000'
示例代码(应该发生什么):
>> x = 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000'>> y = endianSwap(x)>> print y'00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff'解决方法 struct模块无法处理256位数.所以你必须手动编码.
首先,您应该将其转换为字节:
x = 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000'a = x # for having more successive variablesb = a.decode('hex')print repr(b)# -> '\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00'
这样你可以逆转它using @Lennart’s method:
c = b[::-1]# -> '\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff'd = c.encode('hex')z = dprint z# -> 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff总结
以上是内存溢出为你收集整理的如何在Python中将256位大端整数转换为小端?全部内容,希望文章能够帮你解决如何在Python中将256位大端整数转换为小端?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)