gpt4 book ai didi

python - 在 Python 中将 32 位整数写入缓冲区

转载 作者:行者123 更新时间:2023-12-01 02:43:34 24 4
gpt4 key购买 nike

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

据我所知,Node.js Buffer 对象 allocUnsafe 函数返回以十六进制格式编码的伪随机生成的数字数组。

所以我用 Python 解释了 Node.js Buffer.allocUnsafe(n) 方法:

[os.urandom(n) 中的 c.encode('hex')]

但是,allocUnsafe函数有自己的嵌套函数writeInt32BE(value, offset)writeInt32LE(value, offset),我有阅读了官方文档,但我不明白这些函数到底返回了什么。

Python 中的这些 Node.js 函数是否有等效的方法?据我所知,Python 中的同等操作可以通过 struct 模块完成,并且 from_bytes 方法也可以,但我不确定如何实现。提前致谢。

最佳答案

Python 提供了诸如 int.to_bytes(size,byteorder) 之类的方法,请参阅 here
因此,为了将数字转换为 32 位,我们将 to_bytes 方法中的长度设置为 4,即 4*8 = 32 位
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

以字节为单位的默认表示形式是整数的有符号表示形式。
来自文档:

>>> int.from_bytes(b'\x00\x10', byteorder='big')   16  
>>> int.from_bytes(b'\x00\x10', byteorder='little') 4096
>>> int.from_bytes(b'\xfc\x00', byteorder='big', signed=True)
-1024
>>> int.from_bytes(b'\xfc\x00', byteorder='big', signed=False) 64512
>>> int.from_bytes([255, 0, 0], byteorder='big') 16711680

您可以查看十六进制表示形式以转换为整数

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

关于python - 在 Python 中将 32 位整数写入缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45433661/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com