字节序及字节排序函数
主機(jī)字節(jié)序:多于一個(gè)字節(jié)的數(shù)據(jù)類型(多字節(jié)數(shù)據(jù)類型)在內(nèi)存中的存放順序叫主機(jī)字節(jié)序。
最常見的字節(jié)序有兩種:小端字節(jié)序和大端字節(jié)序。
小端字節(jié)序:Little Endian,簡稱LE,將數(shù)據(jù)的最低字節(jié)放在內(nèi)存的起始位置。也就是說,內(nèi)存地址較低的字節(jié)位存放數(shù)據(jù)的低位字節(jié),內(nèi)存地址較高的字節(jié)位存放數(shù)據(jù)的高位字節(jié)。可以簡記為:高高低低。
大端字節(jié)序:Big Endian,簡稱BE,將數(shù)據(jù)的高字節(jié)放在內(nèi)存的起始位置。也就是說,內(nèi)存中地址較低的位存放數(shù)據(jù)的高位字節(jié),內(nèi)存地址較高的字節(jié)位存放數(shù)據(jù)的低位字節(jié)。可以簡記為:高低低高。
術(shù)語“小端”和“大端”表示多字節(jié)值的哪一端(小端或大端)存儲在該值的起始地址。小端存儲在起始地址就是小端字節(jié)序;大端存儲在起始地址就是大端字節(jié)序。
網(wǎng)絡(luò)字節(jié)序標(biāo)準(zhǔn)規(guī)定為大端字節(jié)序。
不同平臺上會對主機(jī)字節(jié)序進(jìn)行轉(zhuǎn)化,成為網(wǎng)絡(luò)字節(jié)序后再進(jìn)行傳送,到主機(jī)后再轉(zhuǎn)化為主機(jī)字節(jié)序。
#include <netinet/in.h>uint16_t htons(uint16_t host16bitvalue); uint32_t htonl(uint32_t host32bitvalue); 均返回:網(wǎng)絡(luò)字節(jié)序值uint16_t ntohs(uint16_t net16bitvalue); uint32_t ntohl(uint32_t net32bitvalue); 均返回:主機(jī)字節(jié)序值總結(jié)
以上是生活随笔為你收集整理的字节序及字节排序函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 模板:保留小数位后多少位
- 下一篇: Android使用ViewPager实现