我通过将字节写入文件并将其另存为 .midi
创建了一个 .mid
文件。我可以运行它并且它可以工作,但在某些特殊情况下它不会。
如果我写入一个包含 \n
的字节(ASCII 10
),那么它将写入 2 个字节 \r\n
,这使得.mid
不可运行。 (这对于 Windows 机器来说是正常的,但在我的情况下并不理想。)编写 \n
的示例可能是在选择由 \n
表示的 key 时>。
是否有一种解决方法来编写 \n
而不是 \r\n
或其他方法来确保写入的字节是 ASCII 10
在 Windows 机器上?
谢谢!
最佳答案
在 linux/unix 上,创建文件时指定 "wb"
还是 "w"
都没有关系。
但是在 Windows 中使用 fopen
创建一个文本文件意味着所有的 \n
都被转换为 \r\n
,所以如果你重新使用它来创建二进制文件,如果有一些字节值为“10”(换行),则二进制文件将“损坏”
简单的解决方案:在所有平台上创建二进制文件时始终使用 fopen("file.bin","wb")
,以便您的代码可移植。
关于创建 .mid 文件 : writing a '\n' causes '\r\n' in Windows,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45849284/