【问题标题】:How to write a uint32 integer into a 4 bytes sequence using numpy?如何使用 numpy 将 uint32 整数写入 4 字节序列?
【发布时间】:2018-07-27 20:55:05
【问题描述】:

我已经声明了一个包含单个无符号整数的 numpy ndarray:

import numpy as np  
foo=np.array([3600000],dtype='uint32')

我想将此数组存储为 4 字节序列。 我已经测试了一些选项,例如 struct.pack() 和 struct.pack_into() 方法,但无济于事。 我还尝试了 numpy.ndarray.tobytes() 方法,它将我的数组的内容转换为字节对象:

bar=np.ndarray.tobytes(foo)

唉,输出字节对象的长度为 4 位! 如何控制输出字节序列的位数?

非常感谢您的帮助!

【问题讨论】:

  • “唉,输出字节对象的长度是 4!” 我很困惑。数组 foo 包含一个 uint32 类型的元素(即一个无符号的 32 位整数)。那是四个字节。为什么你对bar的长度为4感到失望?
  • 嗨沃伦!感谢您的回复;输出字节对象的长度为 4 位!对困惑感到抱歉;我将编辑我的问题以澄清这一点。
  • bar 是一个 bytes 对象,有 4 个字节,而不是位。
  • 谢谢沃伦!这绝对回答了我的问题!
  • 不是很相关,但可以反向转换numpy.ndarray(buffer=<...>, shape=<...>, dtype=<...>)

标签: python numpy byte uint32


【解决方案1】:

正如 Warren Weckesser 所指出的,bytes 对象的长度以字节为单位,而不是以位为单位。 所以在这种情况下,bar 确实有 4 个字节的长度。

【讨论】:

    猜你喜欢
    • 2021-08-20
    • 1970-01-01
    • 1970-01-01
    • 2015-10-03
    • 2019-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-22
    相关资源
    最近更新 更多