如何在Python中将256位大端整数转换为小端?

如何在Python中将256位大端整数转换为小端?,第1张

概述不太复杂,或者我希望如此.我有一个256位十六进制整数编码为大端,我需要转换为小端. Python的struct模块通常就足够了,但 the official documentation没有列出的格式,其大小甚至接近我需要的格式. 使用struct的非长度特定类型(虽然我可能这样做错了)似乎不起作用: >> x = 'ffffffffffffffffffffffffffffffffffffffff 不太复杂,或者我希望如此.我有一个256位十六进制整数编码为大端,我需要转换为小端. Python的struct模块通常就足够了,但 the official documentation没有列出的格式,其大小甚至接近我需要的格式.

使用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位大端整数转换为小端?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1192786.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存