欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

什么时候要进行大小端字节序的转换?

发布时间:2024/3/13 编程问答 46 豆豆
生活随笔 收集整理的这篇文章主要介绍了 什么时候要进行大小端字节序的转换? 小编觉得挺不错的,现在分享给大家,帮大家做个参考.
什么时候要进行大小端字节序的转换? 

通过socket收发数据(在intel的处理器上),
什么时候要进行大小端字节序的转换?

比如发一个int型的数据出去,要不要进行转换?
还是两端一样,就不用考虑转换了?
2005-6-16 13:50  梅川内酷 什么时候要进行大小端字节序的转换? 

intel都是小端,网络上都是大端.
随便找个socket源程序一看便知啊.
2005-6-16 13:53  surfzsl 什么时候要进行大小端字节序的转换? 

在不确定的情况下
最好都转换成处和理器一致的字节序
2005-6-16 14:51  黑咖啡不加糖 什么时候要进行大小端字节序的转换? 

short 或者 long的数据在进行通信的时候最好养成:
1、发送的时候使用:htons(l)
2、接受的时候使用:ntohs(l)
而不要理会两边的通信是否需要这么做~~
当然了一般我都不用int型的数据通信,从来都是字符串通信,发送方利用sprintf组织,接收方利用atoi进行转换~~
2005-6-16 15:47  deathbravo 什么时候要进行大小端字节序的转换? 

说得好,受教了
2005-6-16 15:54  flw 什么时候要进行大小端字节序的转换? 

[quote][i]原帖由 "黑咖啡不加糖" 发表:[/i]
short 或者 long的数据在进行通信的时候最好养成:
1、发送的时候使用:htons(l)
2、接受的时候使用:ntohs(l)
而不要理会两边的通信是否需要这么做~~
当然了一般我都不用int型的数据通信,从来都是字符串通..........[/quote]
这个说法是非常正确的。
2005-6-16 15:58  flw 什么时候要进行大小端字节序的转换? 

[quote][i]原帖由 "surfzsl" 发表:[/i]
在不确定的情况下
最好都转换成处和理器一致的字节序[/quote]
错了。
2005-6-16 16:18  dankey 什么时候要进行大小端字节序的转换? 

那如果一个应用层协议,定义的消息体就是
unsigned int(4个字节);
char[16](16个字节);
像这样的,在发送的时候应该怎么处理?
2005-6-16 16:18  surfzsl 什么时候要进行大小端字节序的转换? 

[quote][i]原帖由 "黑咖啡不加糖" 发表:[/i]
short 或者 long的数据在进行通信的时候最好养成:
1、发送的时候使用:htons(l)
2、接受的时候使用:ntohs(l)
而不要理会两边的通信是否需要这么做~~
当然了一般我都不用int型的数据通信,从来都是字符串通..........[/quote]
:em17:  :em17:  :em17:  :em17: 
偶也想这么说来着
只是不知道怎么表达清楚
记得在哪本书中看过就是这么说的
:em06:  :em06:  :em06:  :em06:  :em06:
2005-6-16 18:15  mike_chen 什么时候要进行大小端字节序的转换? 

用于网络传送时最好都加上,大多数处理器是big Endian,字节顺序同于网络,但有的处理器象space就是little endian,所以为避免出错就都转了把
2005-6-16 18:46  happyall 什么时候要进行大小端字节序的转换? 

哇赛,这儿全是高手.我30岁了,刚刚开始学,下次请大家多多指教.
2005-6-16 22:00  mq110 什么时候要进行大小端字节序的转换? 

我从一开始就按字符串来交换数据.至今也没出现楼上说的问题.:)
2005-6-16 22:11  newroot_phy 什么时候要进行大小端字节序的转换? 

问一下,我记得好像是字符串和结构体不用转换成网络码的吧!!??
2005-6-16 22:19  mq110 什么时候要进行大小端字节序的转换? 

只是知道字符串不用..
结构体里也有int类型的.或者其他类型的.
2005-6-17 08:55  双眼皮的猪 什么时候要进行大小端字节序的转换? 

[quote][i]原帖由 "mike_chen"]用于网络传送时最好都加上,大多数处理器是big Endian,字节顺序同于网络,但有的处理器象space就是little endian,所以为避免出错就都转了把[/quote 发表:[/i]

一般是little endian,sparc是big endian
2005-6-17 10:22  dengyunze 什么时候要进行大小端字节序的转换? 

一般是little endian,sparc是big endian
-----------------------------
正解。
2005-6-17 11:42  cattiger 什么时候要进行大小端字节序的转换? 

你这个一般是指什么情况!?什么是一般,你接触到的就是一般吗?
大部分小型机采用big endian,运行的是unix系统,也有一些小型机是little endian 系统,如康柏的vms!intel的处理器是little endian 的,所以windows是little endian系统。 是什么字续,主要取决与处理器的处理顺序!
楼上的一般是否可以理解为用intel处理器的机器
2005-6-17 11:45  b46 什么时候要进行大小端字节序的转换? 

哈哈
2005-6-17 12:25  narkissos 什么时候要进行大小端字节序的转换? 

一般说来,在通信软件中,考虑大小尾是一个非常正规且严谨的做法,我们不能假定所有的通信都在同一种体系结构下工作。
一般来说,除了intel 80x86系列处理器是小尾架构,绝大部分处理器均为大尾架构,如sparc系列/power系列/moto的68系列等。网络字节顺序也是大尾的。
在编解码时,尤其需要注意大小尾问题。在每处使用超过一个byte的地方,最好使用转换函数(hton*和ntoh*系列或自写均可)
所以,当你的通信软件要和其他机器上的通信软件(模块)通信时,凡是编解码等地方使用了超过1个字节的数据类型,都最好使用转换函数。在部分socket处理中,也需要加上转换函数(如ipaddr结构的填写等处),另外一部分本身已经包含相关处理,就可以不用加。

总结

以上是生活随笔为你收集整理的什么时候要进行大小端字节序的转换?的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。