c# - 在二进制文件中间插入字节

标签 c# bytearray bytecode-manipulation iptc

我想在图像元数据 block 的中间添加一些字符串。在一些特定的标记下。我必须在字节级别上执行此操作,因为 .NET 不支持自定义元数据字段。

该 block 的构建类似于 1C 02 XX YY YY ZZ ZZ ZZ ... 其中 XX 是我需要附加的字段的 ID,YY YY 是它的大小,ZZ = 数据.

我想应该或多或少可以读取这个标记 (1C 02 XX) 之前的所有图像数据,然后增加大小字节 (YY YY),在 ZZ 的末尾添加数据,然后添加其余的原始文件?这个对吗?

我该如何继续?它需要尽可能快地处理 4-5 MB JPEG 文件。

最佳答案

一般来说,没有办法加快这个操作。您必须至少读取需要移动的部分并将其重新写入更新的文件中。如果可以并行读取和写入操作,则创建新文件并将内容复制到其中可能会更快。

注意:在您的特定情况下,可能无法仅在文件中间插入内容,因为大多数文件格式在设计时并未考虑此类修改。当您移动文件的一部分时,文件的某些部分通常会有偏移量,这些偏移量将无效。指定您尝试使用的文件格式可能有助于其他人提供更好的方法。

关于c# - 在二进制文件中间插入字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5939464/

相关文章:

C# 文件监控

C# Winforms 数据绑定(bind)

Java instanceof 和 byte[]

bytecode-manipulation - 字节码检测 - 实现 native 或 Java 代理?

c# - 在哪里可以找到好的 VS Coded UI 引用资料?

android - 获取 Blob 图像并将该图像转换为位图图像

java - 如何在 Java 中有效地改变字节数组的字节顺序

java - ASM 4(Java 库)教程?

java - 如何使用 ByteBuddy 拦截方法,就像在 CGLIB 中使用 MethodInterceptor 来调用 MethodProxy.invokeSuper(...)

c# - 在 C#.NET 中从 BlackBerry 解密 PKCS #1 v2.1 密码