有没有比 int( byte_buffer.encode('hex'), 16 ) 更好的方法

发布于 2024-07-23 04:41:45 字数 247 浏览 6 评论 0原文

在Python中,我经常使用以下序列从字节缓冲区中获取整数值(在Python中这是一个str)。

我从 struct.unpack() 例程获取缓冲区。 当我使用解压“char”时

byte_buffer, = struct.unpack('c', raw_buffer)
int_value = int( byte_buffer.encode('hex'), 16 )

有更好的方法吗?

In Python, I'm constantly using the following sequence to get an integer value from a byte buffer (in python this is a str).

I'm getting the buffer from the struct.unpack() routine. When I unpack a 'char' using

byte_buffer, = struct.unpack('c', raw_buffer)
int_value = int( byte_buffer.encode('hex'), 16 )

Is there a better way?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

撑一把青伞 2024-07-30 04:41:45

struct 模块擅长解压二进制数据。

int_value = struct.unpack('>I', byte_buffer)[0]

The struct module is good at unpacking binary data.

int_value = struct.unpack('>I', byte_buffer)[0]
寒江雪… 2024-07-30 04:41:45

限制为 1 字节 – Noah Campbell 18 分钟前

执行此操作的最佳方法是实例化一个结构解包器。

from struct import Struct

unpacker = Struct("b")
unpacker.unpack("z")[0]

请注意,如果您想要无符号字节,可以将“b”更改为“B”。 此外,不需要字节序格式。

对于任何其他想了解无界整数方法的人,请创建一个问题,并在评论中告诉我。

Bounded to 1 byte – Noah Campbell 18 mins ago

The best way to do this then is to instantiate a struct unpacker.

from struct import Struct

unpacker = Struct("b")
unpacker.unpack("z")[0]

Note that you can change "b" to "B" if you want an unsigned byte. Also, endian format is not needed.

For anyone else who wants to know a method for unbounded integers, create a question, and tell me in the comments.

花桑 2024-07-30 04:41:45

如果我们正在谈论获取字节的整数值,那么您需要这样:

ord(byte_buffer)

无法理解为什么还没有建议。

If we're talking about getting the integer value of a byte, then you want this:

ord(byte_buffer)

Can't understand why it isn't already suggested.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文