免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1511 | 回复: 9
打印 上一主题 下一主题

字节顺序问题,急! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-07-13 17:58 |只看该作者 |倒序浏览
数值型数据转换为网络字节后,能否赋值给字符串?

main()
{
unsigned long pkg_no,sn;
char ss[5];
...
sn=1;
memset(ss, 0x00, sizeof(ss));
pkg_no=htonl((unsigned long)sn);
memcpy(ss, (void *)&pkg_no, 4);
...
printf("ss=[%d][%s]\n",strlen(ss),ss);
}

结果为:ss=[0][]
为何是空值?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2004-07-13 18:35 |只看该作者

字节顺序问题,急!

那你想要什么呢?

论坛徽章:
0
3 [报告]
发表于 2004-07-13 23:48 |只看该作者

字节顺序问题,急!

数值型数据转换为网络字节后,能否赋值给字符串?
当然可以赋值
只是:" 那你想要什么呢?"  
1转换成网络字节序后就变成了 0x00000001
赋值给字符串ss后
ss[0] = 0x00;
ss[1] = 0x00;
ss[2] = 0x00;
ss[3] = 0x01;
这个时候给你的表现就是:字符串ss成了空值了

论坛徽章:
0
4 [报告]
发表于 2004-07-14 08:34 |只看该作者

字节顺序问题,急!

那我如何通过sokect通讯发送ss到另一台机上?
因为strlen(ss)=0,所以在发送时长度如何取?难道直接发送4个字节吗?

论坛徽章:
0
5 [报告]
发表于 2004-07-14 08:39 |只看该作者

字节顺序问题,急!

当然了,就是4个字节
对端收到后,memcpy到int里,或者直接用int *就行了。再ntohl就得到了你发送过去的值
还有,你发送之前就根本无须memcpy到ss里
直接进行强制类型转换即可

论坛徽章:
0
6 [报告]
发表于 2004-07-14 09:36 |只看该作者

字节顺序问题,急!

原帖由 "bashfulboy" 发表:
1;
1转换成网络字节序后就变成了 0x00000001

老大,这样说,是不是会误导人?
不管是否转换成网络字节序,存储的数值应该不变吧,只是在内存中的排列顺序有变化而已,是不?

论坛徽章:
0
7 [报告]
发表于 2004-07-14 09:38 |只看该作者

字节顺序问题,急!

大老,我指的 0x00000001 就是在内存中的排列顺序啊 = 0x00 0x00 0x00 0x01
跟你的理解一样啊

论坛徽章:
0
8 [报告]
发表于 2004-07-14 09:44 |只看该作者

字节顺序问题,急!

^_^,那可能是我理解有点问题。
(ps:我一看到你的照片以为是我同学,吓了一跳,呵呵。)

1楼的,关于网络字节顺序可以参考http://www.chinaunix.net/jh/23/123743.html

论坛徽章:
0
9 [报告]
发表于 2004-07-14 09:47 |只看该作者

字节顺序问题,急!

说不定你跟我真的是同学啊 ^_^
嗨,来将通名!

论坛徽章:
0
10 [报告]
发表于 2004-07-14 10:27 |只看该作者

字节顺序问题,急!

^_^,我是桂电的,有空用qq聊聊。不然给斑竹看到了,以为我们用这个喷口水呢,呵呵。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP