【问题标题】:Generating bmp image on 2 different linux machines gives me 1 working file and 1 corrupt在 2 台不同的 linux 机器上生成 bmp 图像给了我 1 个工作文件和 1 个损坏的文件
【发布时间】: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


【解决方案1】:

我解决了这个问题:

#pragma pack(push, 2)

struct goes here

#pragma pack(pop)

感谢放松。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-05
    • 1970-01-01
    • 1970-01-01
    • 2012-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多