Java字节序与大小端转换_什么时候要进行大小端字节序的转换? | 学步园

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

通过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结构的填写等处),另外一部分本身已经包含相关处理,就可以不用加。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值