【发布时间】:2019-11-18 22:40:13
【问题描述】:
在我从这个网站获得的Desiginin File Formats 链接中,我注意到png 有CRLF\x1A\LF 块,用于“测试”回车和换行符转换。
我正在为某个项目构建自定义二进制结构,我想知道为什么这很有用,在什么情况下我应该考虑添加它?
【问题讨论】:
-
您在链接文档中的什么位置可以找到有关“测试”块的任何信息?
-
设计文件格式 > 标识字节 > 第四段。
-
啊那个位。这不是关于测试块或类似的东西。这是一种确保文件处理功能可以被信任来完成它应该做的事情的方法。
\r\n序列不应该被翻译,\n也不应该被翻译,它们应该被完全按照那样阅读。 -
这看起来像是 png 解码器功能检查上游进程没有以 ascii 模式而不是二进制模式打开文件的一种方式。这是一个非常聪明的想法,我以前没有遇到过。它将允许解码器在这种情况下抛出有用的错误消息,而不是神秘地失败。
-
请记住,如果您使用
fopen(name, "r");打开文件,Windows 上的二进制文件会发生什么情况,所有\r\ns 都会被\n默默替换,这可能会破坏二进制内容。我相信这有点像测试模式。如果不是\r\n\032\n,则可能是之前应用的工具损坏了内容。
标签: c++ data-structures binary newline