Q: 到底ntohl()與htonl()做了什麼?
A: "ntohl()" 與 "htonl()" 是四個相關 function 中的其中二個,另外二個是 "ntohs()" 與 "htons()",以下是 Linux manual 中的解釋
  1. "htonl()" function 將 unsigned integer hostlong 從 host byte order 轉為 network byte order.
  2. "htons()" function 將 unsigned short integer hostshort 從 host byte order 轉為 network byte order.
  3. "ntohl()" function 將 unsigned integer netlong 從 network byte order 轉為 host byte order.
  4. "ntohs()" function 將 unsigned short integer netshort 從 network byte order 轉為 host byte order.

這四個 function 在 host byte order 與 network byte order 之間做轉換。當二者的 byte order 不同時,則使用這些 function 會造成 endian-ness 的改變。當二者的 byte ordre 一樣時,則不會有任何的改變。因此,當你只是單純想要做 endian-ness 的轉換(無關乎平台),則不該使用這些 function。




出處:http://cppfaq.blogspot.com/2006/01/ntohlhtonl.html

台南小新 發表在 痞客邦 PIXNET 留言(1) 人氣()


留言列表 (1)

發表留言
  • Fries
  • 'htohl()' function將unsigned integer netlong從network byte order轉為host byte order.

    筆誤了,應該是'ntohl()'
  • 感恩,已修正。

    台南小新 於 2010/11/25 10:21 回覆