LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: chaosfun

位操作问题

[复制链接]
发表于 2008-10-23 10:46:32 | 显示全部楼层
按照文件头结构,组织结构体,这是比较忌讳的。
因为有大小端,pad,对齐的问题!
尤其要注意一个成员跨字节的问题
回复 支持 反对

使用道具 举报

发表于 2009-5-3 22:36:10 | 显示全部楼层
Post by herberteuler;1897047
这段代码完成的工作实际上是将网络字节序转换成本机字节序。为了同时支持两种字节序又使代码比较容易维护,可以分别为两种字节序的机器定义不同的结构,就像你上面那样,两种结构中成员的顺序相反。然后,读取 mp3 帧头时使用整数,并像下面这样来转换:

  1. uint32_t mp3_frame_header;
  2. struct FrameHeader h;
  3. fread (&mp3_frame_header, sizeof mp3_frame_header, 1, fp);
  4. mp3_frame_header = ntohl (mp3_frame_header);
  5. memcpy (&h, &mp3_frame_header, sizeof mp3_frame_header);
复制代码


我现在整MP3针头 弄了半天原来是这么一回事  哎 烦死了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表