【问题标题】:How to convert from bytes to int? [duplicate]如何从字节转换为整数? [复制]
【发布时间】:2018-12-15 15:20:29
【问题描述】:

我知道要从 int 转换为 bytes 你必须这样做,例如:

>>>a = bytes(4)
>>>print(a)
b'\x00\x00\x00\x00'

但是如果我想还原它并将bytes 转换为intfloat,我该怎么办?

我尝试使用:

int.from_bytes( a, byteorder='little')   

int.from_bytes( a, byteorder='big', signed=True) 

但它不起作用。

【问题讨论】:

  • 您期望的结果是什么?如果您有明确定义的二进制格式,unpack 可以将其转换为本机类型或结构。但是有四种不同的方式可以解释您的四个字节,因此您需要首先知道数据是如何序列化的(或者只是猜测,如果这是空闲的好奇心)。
  • 您的问题不是读回号码,而是存储号码。 bytes(4) 创建一个 4 字节数组,全为零。也许你没有注意到数字 4 实际上并不是这个值。以bytes(9) 为例。
  • 所以,返回的方法就是len ;)

标签: python python-3.x


【解决方案1】:
import struct
val = struct.unpack( '<I', b'\x00\x00\x00\x00')[0]

或类似的东西...用&lt;&gt; 符号控制big/little

这里是文档:7.1. struct — Interpret bytes as packed binary data

【讨论】:

    猜你喜欢
    • 2013-07-23
    • 2019-06-25
    • 2020-10-24
    • 2019-09-21
    • 2014-02-22
    • 1970-01-01
    • 2019-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多