标签: binaryfiles

C# - 如何读写二进制文件?

如何从任何文件中读取原始字节数组,并将该字节数组写回新文件?

c# vb.net binaryfiles filestream

10
推荐指数
2
解决办法
9866
查看次数

便携式C二进制序列化原语

据我所知,C库没有帮助将数值序列化为非文本字节流.如我错了请纠正我.

最常用的标准工具是htonlPOSIX等.这些功能有缺点:

  • 没有64位支持.
  • 没有浮点支持.
  • 签名类型没有版本.反序列化时,无符号到符号的转换依赖于有符号整数溢出,即UB.
  • 它们的名称没有说明数据类型的大小.
  • 它们依赖于8位字节和精确大小的uint_ N _t的存在.
  • 输入类型与输出类型相同,而不是引用字节流.
    • 这要求用户执行指针类型转换,这可能在对齐时不安全.
    • 执行该类型转换后,用户可能会尝试在其本机内存布局中转换和输出结构,这种做法很糟糕,导致意外错误.

用于将任意大小序列化为char8位标准字节的接口将落在C标准之间,该标准不真正确认8位字节,并且无论标准(ITU?)将八位位组设置为基本传输单位.但旧的标准没有得到修订.

现在C11有许多可选组件,可以添加二进制序列化扩展以及线程之类的东西,而不需要对现有实现提出要求.

这样的扩展是否有用,或者担心非二进制补充机器是否毫无意义?

c portability binaryfiles endianness htonl

10
推荐指数
1
解决办法
2183
查看次数

FlatBuffers:写入和读取二进制文件?

我对C++和Google FlatBuffers中的文件流有基本了解.Schema文件非常简单,还可以创建缓冲区并从缓冲区指针读取.我没有得到的是如何将多个缓冲区保存到二进制文件中,然后读取该二进制文件以获取任何随机缓冲区.

这是一个带有两个浮点数的简单Schema:

table Car {
    field_a:[float];
    field_b:[float];
}
Run Code Online (Sandbox Code Playgroud)

.

用于构建缓冲区的函数(尽管没有保存文件):

bool save_flatbuf(string file_path, vector<double> vec_a, vector<double> vec_b) {
    flatbuffers::FlatBufferBuilder builder;

    auto vec_floats_a = builder.CreateVector(vec_a, vec_a.size());
    auto vec_floats_b = builder.CreateVector(vec_b, vec_b.size());

    auto mloc = CreateCar(builder, &vec_floats_a, &vec_floats_b);

    builder.Finish(mloc);

    // How to save it into a binary file with a list of "Cars"?
}
Run Code Online (Sandbox Code Playgroud)

.

还有一个从二进制文件中读取缓冲区后读取缓冲区的函数(没有文件读取):

bool read_flatbuf(string file_path) {

    // How to get the buffer pointer to a "Car" from a binary file with a "list of Cars" ? …
Run Code Online (Sandbox Code Playgroud)

c++ serialization fstream binaryfiles flatbuffers

10
推荐指数
1
解决办法
5673
查看次数

运行SWI-Prolog二进制文件而不在机器上安装swipl

我想在没有安装prolog的机器上运行swi-prolog程序(实际上是服务器).

序言代码swipl_test.pl:

 main :- write('Hello, world\n').
Run Code Online (Sandbox Code Playgroud)

在本地机器4.4.0-64-generic #85~14.04.1-Ubuntu SMP Mon Feb 20 12:10:54 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux制作二进制hello有SWI-Prolog version 7.2.3 for amd64:

swipl  --goal=main --toplevel=halt --stand_alone=true  --foreign=save  -o hello1 -c swipl_test.pl
Run Code Online (Sandbox Code Playgroud)

移动hello远程计算机2.6.32-5-amd64 #1 SMP Wed Jun 17 16:09:06 UTC 2015 x86_64 GNU/Linux会出现以下错误:

error while loading shared libraries: libswipl.so.7.2: cannot open shared object file: No such file or directory 
Run Code Online (Sandbox Code Playgroud)

如何从prolog代码中准备一个自包含的二进制文件?我在远程计算机上没有sudo权限.

binaryfiles swi-prolog

10
推荐指数
1
解决办法
293
查看次数

如何在Clojure中解析二进制文件

在clojure中解析二进制数据的最简洁方法是什么?我需要能够同样干净地读/写文件或套接字.

就像是:

  (read-data source-of-data) 
  => { :index 42 , :block-size 4 , data-size: 31415, :data (1 2 3 4 ...)}

以及将数据放回的反向.以某种方式定义结构并使读写函数使用相同的定义真的很棒.

binaryfiles clojure binary-data

9
推荐指数
1
解决办法
4880
查看次数

当项目树有二进制文件时,GIT,Mercurial,SVN或其他版本控制工具能否正常工作?

有时我们的项目树可以有二进制文件,例如jpg,png,doc,xls或pdf.当仅更改二进制文件的一部分时,GIT,Mercurial,SVN或其他工具能否做得很好?

例如,如果规范是用.doc编写的并且它是存储库的一部分,那么如果它是4MB,并且编辑了100次但只是1或2行,并且在一年中检查了100次,那么它是400MB .

如果它是100个不同的.doc和.xls文件,那么它是40GB ......不是一个易于管理的大小.

我已经尝试过GIT和Mercurial并且看到它们似乎都添加了大量的数据,即使在.doc或.pdf中更改了1行.GIT或Mercurial或SVN内部还有其他方法可以完成这项工作吗?

svn git mercurial dvcs binaryfiles

9
推荐指数
2
解决办法
5677
查看次数

如何从命令行CVS提交二进制文件?

我需要从命令行以二进制模式提交jar文件.

我应该使用什么命令?以下不起作用:

$ cvs commit -kb -m "Committing v2.5.7" myJar.jar
Usage: cvs commit [-Rlf] [-m msg | -F logfile] [-r rev] files...
-R          Process directories recursively.
-l          Local directory only (not recursive).
-f          Force the file to be committed; disables recursion.
-F logfile  Read the log message from file.
-m msg      Log message.
-r rev      Commit to this branch or trunk revision.
Run Code Online (Sandbox Code Playgroud)

cvs binaryfiles

9
推荐指数
2
解决办法
1万
查看次数

3个二进制文件的差异

我有3个二进制文件.让我们给他们打电话file1.bin,file2.bin和file3.bin.

  • file1.bin并file2.bin有一些共同的部分.
  • file2.bin并file3.bin有一些共同的部分.

我想找到的公共部分file1.bin和file2.bin那些之间不同的file2.bin和file3.bin.

您如何推荐实现这一目标?我已经使用二进制文件转储到文本文件xxd,然后使用三维差异vim -d file1.txt file2.txt file3.txt.

但是,vim将所有文件中的部分标记为已更改,即使它仅在一个文件中更改并在其他两个文件中保持不变.我希望这些特殊类型的事件标记不同.

macos vim diff binaryfiles

9
推荐指数
1
解决办法
888
查看次数

有没有办法在Rust库中包含二进制文件或文本文件?

我正在尝试创建一个库,我想在其中包含一些二进制(或文本)文件,这些文件将具有将在运行时解析的数据.

我的目的是控制这些文件,不断更新它们并在每次更新时更改库的版本.

这可能通过货物吗?如果是这样,我如何从我的库中访问这些文件?

我想到的一个解决方法是包含一些.rs带有结构和/或常量的文件,这些文件&str会存储数据,但我觉得它很难看.

编辑:

我已经将接受的答案更改为更适合我的案例,但请查看Shepmaster的答案,因为这可能更适合您的情况.

binaryfiles libraries rust rust-cargo

9
推荐指数
2
解决办法
2987
查看次数

.bin 和 .dat 文件有什么区别?

写入二进制文件时,什么时候应该使用.binvs .dat?如果我只是想存储不适合人类阅读的信息,例如商品描述/序列号对,那么如果我只是想使其无法从文本编辑器中读取,那么我选择哪一个是否重要?

c binaryfiles

9
推荐指数
2
解决办法
1万
查看次数