写个uint64_t的程序,涉及大小端的转换。
uint64_t x = 0x0123456789ABCDEF;
On a 32-bit little-endian processor, it will appear in memory as EF CD AB 89 67 45 23 01
On a 64-bit little-endian processor, it will appear in memory as EF CD AB 89 67 45 23 01.
On a 32-bit big-endian processor, it will appear in memory as 01 23 45 67 89 AB CD EF.
On a 64-bit big-endian processor, it will appear in memory as 01 23 45 67 89 AB CD EF.
转换涉及#include
uint64_t htobe64(uint64_t host_64bits);
uint64_t htole64(uint64_t host_64bits);
uint64_t be64toh(uint64_t big_endian_64bits);
uint64_t le64toh(uint64_t little_endian_64bits);
The functions with names of the form "htobenn" convert from host byte order to big-endian order.
The functions with names of the form "htolenn" convert from host byte order to little-endian order.
The functions with names of the form "benntoh" convert from big-endian order to host byte order.
The functions with names of the form "lenntoh" convert from little-endian order to host byte order.、
看了一下头文件,判断是否是小端序,然后采用不同转换方式。涉及bits/byteswap.h头文件。没时间细看了,先记录,以后有时间再看。
上一篇: linux系统调用sendfile和splice简单分析
下一篇: c语言差错调试工具1-Valgrind
0 Responses so far.