当前位置: 首页 > 面试题库 >

从文件读取和存储任意字节长度的整数

巫马刚洁
2023-03-14
问题内容

我试图通过在numpy中进行解析/数据累积来加快我去年编写的二进制文件解析器的速度。numpy定义自定义数据结构并将数据从二进制文件导入其中的能力看起来像我所需要的,除了这些文件中的某些字段是“非标准”长度(例如6字节)的无符号整数。由于我使用的是Python
2.7,所以我制作了自己的int.from_bytes仿真版本来处理这些字段,但是如果有任何方法可以将这些字段读取为numpy中的整数,那显然会更快并且更可取。


问题答案:

Numpy不支持任意字节长度的整数,并且使用ctypes位域将比其价值更大。

我建议使用向量化切片将数据转换为更高标准尺寸的整数:

buf = "000000111111222222"
a = np.ndarray(len(buf), np.dtype('>i1'), buf)
e = np.zeros(len(buf) / 6, np.dtype('>i8'))
for i in range(3):
    e.view(dtype='>i2')[i + 1::4] = a.view(dtype='>i2')[i::3]
[hex(x) for x in e]


 类似资料:
  • 问题内容: 我有一个Spring应用程序,该应用程序使用最初由Spring Roo创建的JPA( Hibernate )。我需要存储任意长度的字符串,因此,我用 @Lob 注释了该字段: 该应用程序可以在本地主机上正常运行,但是我已将其部署到外部服务器,并且出现了编码问题。因此,我想检查存储在PostgreSQL数据库中的数据是否正确。该应用程序自动创建/更新表。并且为该字段(消息)创建了一个类型

  • 问题内容: 我有两个过程,其中一个正在写(附加)到文件,另一个正在从文件读取。这两个进程正在同时运行,但无法通信。另一个读取器进程可能在写入器进程完成之前开始。 这种方法有效,但read()通常返回已读取零字节且无错误的信息。它们的零长度读取与非零长度读取之比很高,效率很低。 有没有办法解决?这是在POSIX文件系统上。 问题答案: 没有通信通道,就无法保证在读取正在写入的文件时,防止零字节读取甚

  • 我已经创建了一个可外部化的对象用户。除了我退出应用程序并重新打开它之外,它在写入和从存储中读取它时工作得很好。然后出现此错误: 在java.io.datainputstream.readfully(datainputstream.java:197)在java.io.datainputstream.readutf(datainputstream.java:609)在java.io.datainput

  • 我正在使用Spring引导连接到谷歌云存储。 我能够连接到一个文件,并从谷歌云存储桶中读取内容。 但是我不能得到谷歌云存储桶中所有文件的列表。 请帮帮我。 这很有效 这不工作。 有什么原因吗?

  • 问题内容: 根据Python整数范围内的答案,Python)应该具有“任意精度整数” 。但是这个结果显然 不是 任意精度: 根据PEP 237 ,它是任意大的(不仅仅是C类型的大小)。和维基百科说,Python的是任意精度。 那么,为什么以上代码行的结果不正确? 问题答案: 实际上,在python3中,每当您对int进行除法运算时,都会得到float。有一个执行整数除法的运算符: 这确实给出了正确

  • 问题内容: 我正在尝试使用AWS S3存储桶中的文件进行读取 我已经能够使用节点aws-sdk下载和上传文件,但是我对如何简单地读取文件并解析内容感到困惑。 这是我从s3中读取文件的示例: 问题答案: 您有两种选择。您可以包括一个回调作为第二个参数,该参数将与任何错误消息和对象一起调用。该示例直接来自AWS文档: 或者,您可以将输出转换为流。AWS文档中还有一个示例: