TL;DR:我可以使用 Red 或 Rebol 增量读取二进制文件吗?
我想使用 Red 来处理一些大的(13MB 到 2GB)结构化二进制文件(Kurzweil 合成器文件)。我曾使用其他语言(C、Go、Tcl、Ruby、Dart)浏览这些文件,现在我想用 Red 或 Rebol 做同样的事情。
有没有办法逐字节地增量读取二进制文件?我所看到的只是读取/二进制文件,它似乎一次吞噬了整个文件(或文件的一部分)。
我也需要跳转一点(查看下一个字节,或者跳到一个部分的末尾,或者跳过可变长度字符串到数据的开头)。
(是的,我可以制作一些跟踪位置并使用 read/part/seek 的助手。)
如果可能的话,我想调用低级操作系统 read/seek - 要学习的新东西。
这是在 macOS 上,但可移植解决方案会很棒。
谢谢!
PS:“open/read %abc”给出错误“*** Script Error: open does not allow file! for its port argument”,即使帮助消息说端口参数是“port [port! file !网址!阻止!]”
最佳答案
Rebol 有 ports为此,计划用于 0.7.0以红色发布。所以,当前的 I/O 是非常基本的,只有缓冲区,open
是一个初步的 stub 。
I would like to make a call to the low level OS read/seek if that is possible - something new to learn.
您可以利用 Rebol或 Red/System FFI 作为一种学习练习。
关于rebol - 如何增量读取二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58175838/