【发布时间】:2015-02-18 11:53:34
【问题描述】:
我创建了一个程序,它根据一个字符串创建一个 BMP 文件。
在 slackware 机器上:
- i686;
- 小端;
- lang = en_US;
图像完美生成,文件 img.bmp 的结果为:
- 'img.bmp:PC位图,Windows 3.x格式,168 x -168 x 24'
文件 -si img.bmp 的结果是:
- 'img.bmp: 图像/x-ms-bmp; charset=binary'
在 Xubuntu 上:
- i686;
- 小端;
- lang = en_US;
图像损坏,比工作图像多 2 个字节,文件 img.bmp 给出:
- 'img.bmp: 数据'
文件 -si img.bmp 给出:
- 'img.bmp:应用程序/八位字节流; charset=binary'...
两个源文件都是“ASCII 文本”。
工作二进制可执行文件的编码是:
- 'ELF 32 位 LSB 可执行文件,Intel 80386,版本 1 (SYSV),动态链接(使用共享库),未剥离'。
工作二进制可执行文件的编码(但会生成损坏的图像)是:
- 'ELF 32 位 LSB 可执行文件,Intel 80386,版本 1 (SYSV),动态链接(使用共享库),适用于 GNU/Linux 2.6.24,BuildID[sha1]=07dc7b384509e7a6b2d1f87460998b00fe050866,未剥离'。
我试图了解为什么我可以查看在我的 slackware 虚拟机上生成的图像,但我无法在 Xubuntu 上查看它...
【问题讨论】:
-
源代码的编码当然与运行编译程序的输出的编码无关。您可能有一些依赖于未定义行为(可能是结构打包)的错误,但当然如果没有代码就不可能说。
-
啊,是的!完美,这就是问题所在。我知道源代码的编码与运行编译程序的输出无关,但我怕我忘记了什么。
标签: c linux encoding qr-code bmp