当前位置:  技术问答>linux和unix

写位图文件(BMP)在x86和sparc上不同的效果

    来源: 互联网  发布时间:2016-03-27

    本文导语:  位图头文件结构 typedef struct myBarCodeBITMAPFILEHEADER {   WORD bfType='MB';      // 位图文件的类型,必须为   DWORD bfSize=326;     // 位图文件的大小,以字节为单位   WORD bfReserved1=0;   WORD bfReserved2=0;   DWORD bfOffB...

位图头文件结构
typedef struct myBarCodeBITMAPFILEHEADER
{
  WORD bfType='MB';      // 位图文件的类型,必须为
  DWORD bfSize=326;     // 位图文件的大小,以字节为单位
  WORD bfReserved1=0;
  WORD bfReserved2=0;
  DWORD bfOffBits=62;  // 位图数据的起始位置T字节为单位
} BARCODEBITMAPFILEHEADER;
写完毕位图文件(BMP)在x86和sparc上不同,sparc生成的BMP无法浏览.他们的二进制文件在头三行不一样,不同部分如下
x86:
4D 42 00 00 01 46 00 00 00 00 00 00 00 3E 00 00
00 28 00 00 00 21 00 00 00 21 00 01 00 01 00 00
00 00 00 00 01 08 00 00 00 00 00 00 00 00 00 00
00 02 00 00 00 02 FF FF FF 00 00 00 00 00 EA 9E

sparc:
42 4D 46 01 00 00 00 00 00 00 3E 00 00 00 28 00
00 00 21 00 00 00 21 00 00 00 01 00 01 00 00 00
00 00 08 01 00 00 00 00 00 00 00 00 00 00 02 00
00 00 02 00 00 00 FF FF FF 00 00 00 00 00 EA 9E

我认为是字节序的问题,在solaris sparc上把位图头文件的值进行了字节序转换,然后在生成bmp图片,造成的后果是其二进制文件几乎所有行都与x86下生成的bmp不一样了,而不仅仅是头三行了。
哪位高手说说看


附:字节序转化函数如下
void BigToLittleEndian(char *buf, short size) //big endian和little endian的转换 

char tmp; 

switch (size) { 
case 2: 
tmp=buf[0]; buf[0]=buf[1]; buf[1]=tmp; 
break; 
case 4: 
tmp=buf[0]; buf[0]=buf[3]; buf[3]=tmp; 
tmp=buf[1]; buf[1]=buf[2]; buf[2]=tmp; 
break; 
case 8: 
tmp=buf[0]; buf[0]=buf[7]; buf[7]=tmp; 
tmp=buf[1]; buf[1]=buf[6]; buf[6]=tmp; 
tmp=buf[2]; buf[2]=buf[5]; buf[5]=tmp; 
tmp=buf[3]; buf[3]=buf[4]; buf[4]=tmp; 
break; 
default: 
break; 

return; 





   

|


。。。。
解释下,生成bmp图片,就是说得到需要写到文件中的数据。
然后再写文件,是说把应该写到文件中的数据写到文件中。

生成数据和写文件,不是一码事。

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 位图的问题
  • 位图显示
  • 模块化 2D 位图图形库 GFXprim
  • 位图图像绘图软件 MacPaint
  • 用java读取位图
  • 求教linux如何显示位图
  • BT源码里面的位图问题
  • Linux下如何显示一幅位图,不用QT的方法
  • Unix下如何显示bmp格式的位图(使用xWindow的API)?
  • 一个入门级的问题:如何实现类似于VC中内存位图的东西?
  • asp.net创建位图生成验证图片类(验证码类)
  • C++实现位图排序实例
  • C语言实现的bitmap位图代码分享
  • SQL Server误区30日谈 第6天 有关NULL位图的三个误区
  • 数据结构之位图(bitmap)详解
  • 判断图片-判断位图是否是黑白图片的方法
  • CISBitmap派生的VC++位图透明类实例
  • 用位图排序无重复数据集实例代码(C++版)
  • C语言位图算法详解
  • 位图按扭


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3