首页
社区
课程
招聘
[求助]关于C编译器的高低位设置
发表于: 2011-4-14 11:54 4367

[求助]关于C编译器的高低位设置

2011-4-14 11:54
4367
我也不知道这样的标题是否正确,我不是非常了解C,所以请见谅。

问题请看图,是关于TC(Tokyo Cabinet)的,TC的命令行产生的数据库,与PHP扩展产生的数据库不兼容,我找了好久原因,最后通过文件对比对发现,应该是文件头定义的问题。但文件头定义是一个,编译PHP扩展用的也是TC的头。所以我觉得问题出在C编译器上。把高低位弄反了。 请问Linux下C编译有这方面的设置吗?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 1897
活跃值: (1976)
能力值: ( LV12,RANK:230 )
在线值:
发帖
回帖
粉丝
2
这就是大端与小端的问题。


unsigned long Swap32(unsigned long n)
{
	return (( n&0xFF000000) >> 24) | (( n&0x000000FF) <<24) | (( n&0x00FF0000) >> 8) | (( n&0x0000FF00) << 8);
}

2011-4-14 12:27
0
雪    币: 50
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
一般来说,在网络上传递的数据是大端的,这是协议规定的。
而在主机上,可能为小端的,如intel。
hton host to net(short int)
ntoh net to host (short int)
htonl host to net (long int)
ntohl net to host (long int)
网络字节序跟主机字节序转换的函数,加进去试试。
2011-4-14 12:38
0
雪    币: 142
活跃值: (278)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
4
谢谢楼上两位,应该就是这个问题。

我得再去找找如果在PHP编译时设置此项。
2011-4-14 14:19
0
游客
登录 | 注册 方可回帖
返回