社区
C语言
帖子详情
求教:如何用c语言将big endian的二进制输入文件在读入时处理成little endian的?(有结构体)
ShiningIce
2006-08-24 04:53:17
由于使用的机器是little endian的,而给定的程序二进制输入集是big endian的,想在读入文件的时候将其转换为little endian的效果,要考虑有机构体的情况,请赐教。
...全文
486
12
打赏
收藏
求教:如何用c语言将big endian的二进制输入文件在读入时处理成little endian的?(有结构体)
由于使用的机器是little endian的,而给定的程序二进制输入集是big endian的,想在读入文件的时候将其转换为little endian的效果,要考虑有机构体的情况,请赐教。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Jim_King_2000
2006-08-25
打赏
举报
回复
#include <windows.h>
inline void swap(BYTE *pby1, BYTE *pby2)
{
BYTE byTemp = *pby1;
*pby1 = *pby2;
*pby2 = byTemp;
}
int x = 0x12345678;
BYTE *pByte = static_cast<BYTE *>(&x);
swap(pByte, pByte + 3);
swap(pByte + 1, pByte + 2);
ShiningIce
2006-08-25
打赏
举报
回复
谢谢大家的热心,忘记先说我测试的平台是amd64位双核的机子
我先自己试试,遇到问题再来请教大家
fmddlmyy
2006-08-25
打赏
举报
回复
没有很好的办法。必须根据原始数据,确定每个需要调换的word和dword的偏移(可以弄一张表),然后逐一调换。
或者数据源主动将数据写成小尾。
如果是标准的C结构,可以用perl脚本直接从源文件读出偏移信息。
大耳
2006-08-24
打赏
举报
回复
#ifndef swap32
#define swap32(x) ((((x)&0xFF)<<24) \
|(((x)>>24)&0xFF) \
|(((x)&0x0000FF00)<<8) \
|(((x)&0x00FF0000)>>8) )
#endif
其实是自己做字节调换,
saoyu
2006-08-24
打赏
举报
回复
写错了,不好意思
htonl,htons同理可得,本地字节顺序向网络字节顺序,就是本地字节顺序-->big endian
saoyu
2006-08-24
打赏
举报
回复
ntohl ntohs是网络字节顺序向本地字节顺序转化(就是big endian向本地字节顺序),如果是intel的big endian-->little endian,如1234转成3412,单个字节内每一位顺序不变。如果是powerpc体系结构则是big endian-->big endian,即不作任何变化。
htonl,htons同理可得,本地字节顺序向网络字节顺序,就是little endian-->本地字节顺序
jixingzhong
2006-08-24
打赏
举报
回复
那写一个转换函数吧 ...
不过可能很麻烦 ...
yingge
2006-08-24
打赏
举报
回复
仿佛搞反了,应该是
ntohl转换双字,如传过来的是1234,转换之后就是4321
ntohs转换字,如传过来的是12,转换之后就是21
抱歉.
yingge
2006-08-24
打赏
举报
回复
网络字节顺序就是big endian的,这两个函数用在Intel机器上就可以将字或者双字转换成little endian
htonl转换双字,如传过来的是1234,转换之后就是4321
htons转换字,如传过来的是12,转换之后就是21
不要管什么结构体,只要你知道下一个读出来的是字还是双字就足够了。
ShiningIce
2006-08-24
打赏
举报
回复
这个仿佛是网络专用的吧
htons()和htonl()用来将主机字节次序转成网络字节次序,前者应用于16位无符号数,后者应用于32位无符号数
能否说详细些,谢谢
yingge
2006-08-24
打赏
举报
回复
用ntohl或者ntohs函数转换
关于 GoogleDataTransport 相关内容的介绍与说明
【源码预览】:https://renmaiwang.cn/s/rg8k5 GoogleDataTransport(谷歌数据传输工具)
Android Studio Narwhal 2025.1.3(android-studio-2025.1.3.7-mac.zip.002)
Android Studio Narwhal 2025.1.3(android-studio-2025.1.3.7-mac.dmg)适用于macOS Intel系统,
文件
使用360压缩软件分割
成
两个压缩包,必须一起下载使用: part1: https://download.csdn.net/download/weixin_43800734/91972217 part2: https://download.csdn.net/download/weixin_43800734/91972215
基于Q-learning算法的迷宫路径规划问题研究附Matlab代码.rar
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
基于融合正余弦和柯西变异的麻雀优化算法(SCSSA)-CNN-BiLSTM(双向长短期记忆网络)的
时
间序列预测模型附Matlab代码.rar
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
在空间领域中通过Copula图模型对极端事件进行建模附Matlab代码.rar
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
C语言
70,026
社区成员
243,245
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章