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結構的填寫等處),另外一部分本身已經包含相關處理,就可以不用加。
總結
以上是生活随笔為你收集整理的Java字节序与大小端转换_什么时候要进行大小端字节序的转换? | 学步园的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信小程序开发基础知识2(黑马)
- 下一篇: 如何解决Css属性text-overfl