问题标签 [binary-data]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1713 浏览

parsing - 高效灵活的二进制数据解析

我有一个外部设备,它吐出二进制数据的 UDP 数据包和在嵌入式系统上运行的软件,需要读取这个数据流,解析它并做一些有用的事情。二进制数据也被记录到文件中。我想编写一个解析器,它可以轻松地直接从 UDP 流或文件中获取输入,将数据解析为特定格式,然后将输出定向到文件(例如 matlab dat 文件)或另一个进程这将进行一些实时处理。是否有任何资源可以帮助我解决这个问题,最好的方法是什么?我认为使用 C++ 流可能有意义,但我不熟悉创建自定义输出流。这似乎是一种很好的方法,还是有更好的方法?

谢谢。

0 投票
2 回答
1032 浏览

c++ - 自定义数据 iostream

我有一个定义为的数据结构

我想获取一个字符流并将其转换为 myData 流。我应该扩展什么流类?我想创建一个自定义流类,以便我可以做类似的事情

0 投票
3 回答
1475 浏览

java - Reading/writing binary structures: how to simplify this code?

I'm writing a network app, which sends and receives a lot of different kinds of binary packets, and I'm trying to make adding new kinds of packets to my app as easy as possible.

For now, I created a Packet class, and I create subclasses of it for each different kind of packet. However, it isn't as clean as it seems; I've ended up with code like this:

What bothers me about this approach is the code repetition - I'm repeating the packet structure four times. I'd be glad to avoid this, but I can't see a reasonable way to simplify it.

If I was writing in Python I would create a dictionary of all possible field types, and then define new packet types like this:

I suppose that I could do something similar in any functional language. However, I can't see a way to take this approach to Java.

(Maybe I'm just too pedantic, or I got used to functional programming and writing code that writes code, so I could avoid any repetition :))

Thank you in advance for any suggestions.

0 投票
6 回答
774 浏览

xml - 以预解析的二进制格式存储 XML 文档

我的应用程序需要存储大量类似 XML 的分层信息,并满足以下要求:

  1. 快速阅读
  2. 最小的内存消耗
  3. 键入的数据,而不仅仅是文本

对于实现这些目标的二进制格式有什么建议吗?

0 投票
1 回答
318 浏览

svn - 在 Subversion Checkout 中同步大型无版本文件

一段时间以来,我们一直在为研究实验室使用 Subversion 存储库,并且反复遇到一个常见问题:

我们希望对所有代码和少量永久数据进行版本控制,但我们也有大型二进制 blob,它们位于用户结帐时被忽略的目录中,我们希望用户能够轻松备份这些文件和同步它们,以便多个用户可以使用更大的 blob,而无需在机器之间手动复制它们或将它们签入存储库(它已经拥有比理想更多的此类东西)。

我曾考虑过使用 JungleDisk 等各种备份服务,至少可以让用户轻松备份这些数据,但它们并不是真正为同步而设计的。此外,仅使用 JungleDisk 也不太理想,因为有时数据文件非常大,等待它们被缓存可能会显着降低性能。

其他替代方案可能是提供 rsync 的副本,并且只使用存储库中的一些 shell 脚本,用户可以运行这些脚本来手动同步文件(与 svn checkouts/commits 分开),但如果能真正使用它会很好对于可能不是最精通技术的用户,在 Mac、Windows 和 Linux 上的工作量最小。因此,最好让它易于配置(对于新的未版本控制的文件)、易于安装(步骤越少越好)并且不需要太多的用户干预来使系统工作(自动或只是双单击脚本会很好)。

有什么想法或建议吗?

0 投票
2 回答
925 浏览

php - Lamp / Cakephp:流式传输图像:二进制 0x00 替换为 0x20

我正在尝试创建一个脚本,该脚本从数据库中提取图像并将其显示给用户,由<img src="viewImage/someImageName">

但是我遇到的问题是当显示图像时,所有的 Nulls (0x00) 都被 0x20 替换,我不知道为什么。数据库中的数据显示它是空值,但在某个地方它被更改为 0x20s。

有人有什么主意吗?有什么我想念的吗?

这是我正在使用的代码:

我认为这与代码没有任何关系,因为如您所见,没有错误的地方。我可以转储二进制内容,它还没有被篡改。

堆栈或 cakephp 有什么想法吗?

更新:我注意到流的开头有一个空格,我正在尝试追踪它,这可能是问题吗?

0 投票
1 回答
540 浏览

blob - 将 mysqlpp::sql_blob 转换为 std::string 是否安全?

我正在从我的 MySQL 数据库中获取一些二进制数据。它以 mysqlpp::sql_blob 类型出现。

恰好这个 BLOB 是一个序列化的 Google Protobuf。我需要对其进行反序列化,以便我可以正常访问它。

这会产生编译错误,因为 ParseFromString() 不适用于 mysqlpp:sql_blob 类型:

但是,如果我强制转换,它可以编译:

这安全吗?由于 mysqlpp 文档中的这个片段,我特别担心:

“因为 C++ 字符串可以很好地处理二进制数据,您可能认为可以使用 std::string 代替 sql_blob,但当前的 String 设计通过 C 字符串转换为 std::string。结果,BLOB 数据被截断在填充 SSQLS 期间第一个嵌入的空字符。如果不完全重新设计 String 或 SSQLS 机制,就无法解决这个问题。

感谢你的协助!

0 投票
9 回答
9977 浏览

c++ - 向量vs 二进制数据的字符串

哪个是用于保存和访问二进制数据的更好的 C++ 容器?

或者

一个比另一个更有效吗?
一种更“正确”的用法吗?

0 投票
4 回答
2045 浏览

python - 使用 Python 的人类可读二进制数据

我的工作要求我执行数学模拟,其参数来自二进制文件。模拟器可以毫无问题地读取这样的二进制文件。

但是,我需要查看二进制文件以确保参数是我需要的参数,而我似乎无法做到这一点。

我想用 Python 编写一个脚本,它可以让我读取二进制文件,搜索我关心的参数,并显示它们的值。

我对二进制文件的了解:

它代表简单的文本(与图像或声音文件相反)。有一段代码可以将文件“转储”为可读格式:如果我在 Emacs 中打开该转储,我会发现如下内容:

所有的文件只是一系列类似的指令。我可以使用该转储代码,但我更愿意让 Python 这样做。

这似乎是一个非常微不足道的问题,我很抱歉没有更好地了解。我以为我是一个熟练的程序员!

非常感谢。

0 投票
6 回答
13651 浏览

python - Python二进制数据读取

一个 urllib2 请求收到如下二进制响应:

它的结构是:

如何读取这样的二进制数据?

提前致谢。

更新:

我使用以下代码在前 6 个字节上尝试了 struct module:

(16777216, 1024)

但它应该输出 (1, 4)。我看了一下手册,但不知道出了什么问题。