慕容森
我建议阅读以下内容:http : //commandcenter.blogspot.com/2012/04/byte-order-fallacy.html#include #include #include uint64_tntoh64(const uint64_t *input){ uint64_t rval; uint8_t *data = (uint8_t *)&rval; data[0] = *input >> 56; data[1] = *input >> 48; data[2] = *input >> 40; data[3] = *input >> 32; data[4] = *input >> 24; data[5] = *input >> 16; data[6] = *input >> 8; data[7] = *input >> 0; return rval;}uint64_thton64(const uint64_t *input){ return (ntoh64(input));}intmain(void){ uint64_t ull; ull = 1; printf("%"PRIu64"\n", ull); ull = ntoh64(&ull); printf("%"PRIu64"\n", ull); ull = hton64(&ull); printf("%"PRIu64"\n", ull); return 0;}将显示以下输出:1720575940379279361如果删除高4个字节,则可以使用ntohl()进行测试。您也可以将其转换为C ++中不错的模板函数,该函数可以在任何大小的整数上工作:template static inline Thton_any(const T &input){ T output(0); const std::size_t size = sizeof(input); uint8_t *data = reinterpret_cast(&output); for (std::size_t i = 0; i < size; i++) { data[i] = input >> ((size - i - 1) * 8); } return output;}现在您的128位安全了!