是否有蟒蛇的快捷方式到32位变量,也就是说,a1a2a3a4
分成a1
,a2
,a3
,a4
快?我已经通过将值更改为十六进制然后分割它来完成它,但是看起来像浪费时间做int
- >string
- >int
。打破了32位数字分成单独的域
回答
Python中并没有真正的32位变量。你是这个意思吗?
x = 0xa1a2a3a4
a4 = int(x & 0xff)
a3 = int((x >> 8) & 0xff)
a2 = int((x >> 16) & 0xff)
a1 = int(x >> 24)
由于SilentGhost指出的那样,你不需要INT转换,因此你可以这样做:
a4 = x & 0xff
a3 = (x >> 8) & 0xff
a2 = (x >> 16) & 0xff
a1 = x >> 24
注意,在旧版本的Python,第二个版本会如果多头返回x的值大于0x7fffffff,否则为int。第一个版本总是返回int。在较新版本的Python中,这两种类型是unified,因此您不必担心这些细节。
你为什么要做'int'转换? – SilentGhost 2010-01-26 12:51:36
SilentGhost:因为他可能会使用Python 2.x,他可能希望将结果作为一个int,而不是很长。这不是必要的,但它也不会受伤。如果您愿意,欢迎您省略int转换。 – 2010-01-26 12:53:16
沉默的幽灵:我现在已经发布了两个版本。 :) – 2010-01-26 12:55:49
使用按位运算。
例如:
myvar = 0xcdf100cd
a0 = myvar & 0xff
a1 = (myvar >> 8) & 0xff
a2 = (myvar >> 16) & 0xff
a3 = (myvar >> 24) & 0xff
的&0xff
保持值的低8位和零的其余部分,而位位移运算符(>>
)用于你提取字节转移到这些低8位。
标准库模块struct做的是短期工作:
>>> import struct
>>> x = 0xa1a2a3a4
>>> struct.unpack('4B', struct.pack('>I', x))
(161, 162, 163, 164)
“包装”与格式'>I'
使得x
到大端顺序的4字节的字符串,然后可以立即“解包”成四个无符号字节大小值,格式为'4B'
。十分简单。
+1不知道。 – 2010-01-26 22:33:44
我知道这是一个旧帖子,但对于任何正在看这个的人 - 这在Python 3中不起作用。TypeError:'int'不支持缓冲接口 – ThatAintWorking 2016-04-01 21:25:14
@ThatAintWorking Pardon?如果将一个整数传递给'struct,那么只会在这里引发TypeError。解压()'(因此,你知道错误文本提到一个int ...),但是如果你注意到,这个答案不会发生,因为struct.pack()总是返回一个字符串...所以它可以像预期的那样100%工作,即使在Python 3中也是如此。我假设你接受了嵌套包,并试图将一个整数直接传递给'struct.unpack()'而不会注意到? – 2017-12-22 06:40:30
有点晚,但我平时做这样的事情:
hexnum = 0xa1a2a3a4
bytes = []
while (hexnum > 0):
bytes.insert(0, hexnum & 0xff)
hexnum >>= 8
不知道但如果它的效率更高,然后解压缩与否(可能不是由于使用list.insert的())。
- 1. C#打破了从单独的类/方法循环
- 2. 打破字符数组成字
- 3. 将1字节值和3字节值打包成单个32位结构
- 4. Mustache.js:为什么它打破串入的单独字符
- 5. 在TCL中将大十六进制数字拆分成32位数字列表
- 6. CSV打破了值非分隔符
- 7. 分裂int值成独立的数字
- 8. 32位寄存器将64位分成两个32位寄存器
- 9. 打破数据成组
- 10. 打破了热图
- 11. 打破了循环
- 12. 如何使用Python将123456789分成单独的数字?
- 13. XOR高32位,低32位,64位数
- 14. 打破分页页数
- 15. 独立的32位汇编程序
- 16. NSLineBreakByWordWrapping打破了哪些字符?
- 17. 从32位8位比较中形成32位汉明字符串
- 18. `nth`打破了大熊猫的分类数据帧
- 19. 谷歌自动完成分割成单独的字段
- 20. 打破单页成多个文件
- 21. 打破一个字符串分解成模式
- 22. 打破一个字符串分割成词序列
- 23. 4个有符号的字节打包成一个32位无符号的
- 24. 如何在JavaScript中将整数分隔成数组中的单独数字?
- 25. 将列中的数字拆分为单独列中的数字
- 26. 如何强制Win7的IE-8 32位,并不打破WinXP的IE-7?
- 27. 单独分隔的Excel数据分成2列
- 28. Icepick被打破了吗?
- 29. WPF:Select TreeViewItem打破了根级
- 30. 排序表打破了TableRowListener?
请解释一下你认为Python“32位变量”是什么。如果你假设它的值是无符号的,那就这么说吧。如果不是,请解释你想要的结果。 – 2010-01-26 13:39:31
我想它是无符号的,因为没有任何值的原因是否定的。 我的意思是a1,a2就像是一个大变量/字符串事物中的索引。我应该把x1x2x3x4,但这同样适用。即时尝试写入CAST128,并在其中的一部分,临时字节存储在x1x2x3 ... x16,z1z2 ... z16。我将如何在一次4操作并更新它们? – calccrypto 2010-01-26 14:29:13