不管基於何種理由,網路封包在制定標準的過程中,採用的是big endian的系統,而x86 CPU 所使用的,則是little endian系統,因此對使用x86的CPU而言,網路程式的設計就必須額外考慮編碼轉換的問題,否則一個簡單的IP或是PORT的數值資料都可能因為編碼的問題,而被對方視為錯誤。
為了解決CPU與網路標準之間對數值編碼不同的問題,下列的函式可以幫助程式設計師完成轉換的工作:
為了解決CPU與網路標準之間對數值編碼不同的問題,下列的函式可以幫助程式設計師完成轉換的工作:
htonl():把32位元數值從little endian轉換為big endian
htons():把16位元數值從little endian轉換為big endian
ntohl():把32位元數值從big endian轉換成little endian
ntohs():把16位元數值從big endian轉換成little endian
本文讨论了由于网络封包采用bigendian格式而x86 CPU使用littleendian格式导致的问题,并介绍了几种用于解决不同字节序之间转换的函数,包括 htonl()、htons()、ntohl() 和 ntohs()。
475

被折叠的 条评论
为什么被折叠?



