用Python将32位整数写入缓冲区

2024-06-28 11:09:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图将32位整数写入字节数组(即节点.js缓冲区)。在

据我所知,节点.jsBuffer objectsallocUnsafe函数返回以十六进制格式编码的伪随机生成的数字数组。在

所以我解释节点.js^Python中的{}方法:

[c.encode('hex') for c in os.urandom(n)]

但是,allocUnsafe函数有它自己的嵌套函数writeInt32BE(value, offset)和{},我读过官方文档,但我不知道这些函数到底返回了什么。在

有什么等效的方法吗节点.jsPython中的函数?正如我所知,Python中的equal action可以通过struct模块和from_bytes方法来实现,但我不确定如何操作。提前谢谢。在


Tags: 方法函数编码字节节点格式js数字
1条回答
网友
1楼 · 发布于 2024-06-28 11:09:02

Python提供了类似int.to_bytes(size,byteorder)参见here
所以为了把数字转换成32位,我们把tobytes方法中的长度取为4,即4*8 = 32 bits
int.from_bytes函数将字节转换为int请参见here

 >>> n = 512
 >>> n_byte = (n).to_bytes(4,byteorder='big')
 b'\x00\x00\x02\x00'
 >>> int.from_bytes(n_byte,byteorder='big')
 512

默认的字节表示是整数的有符号表示。
来自文档:

^{pr2}$

您可以检查十六进制表示转换为整数

>>> hex(6)
'0x6'  
>>> int('0xfeedface',16)
4277009102

相关问题 更多 >