跨平台版本的ntohl()?-C++
Cross platform version of ntohl()? - C++
我正在编写一个跨平台客户端,在提取供使用的档案中,它为每个文件使用IEEE 802.3以太网CRC-32校验和。我对所有的文件进行了这样的检查:
if(s3d_meta_block.crc != 0x61580AC9)
{
errorLog.writeError("File %i is not a valid file/ or is the directory", i);
}
它最终在每个文件上都失败了,我发现它是用ntohl(0x61580AC9)在类似客户端的其他地方写的。
我是在64位Windows上写这篇文章的,理想情况下,我希望它能在每个平台上运行,而不必包括"Winsock2.h"和其他涉及反转endianes的库。
谢谢!
ntohl()包含在许多平台上,并且不会根据处理器对齐的需要交换位。代码中唯一需要的就是#def为这个函数包含正确的头文件(我从未见过没有它的操作系统)