跨平台版本的ntohl()?-C++

Cross platform version of ntohl()? - C++

本文关键字:-C++ ntohl 版本 跨平台      更新时间:2023-10-16

我正在编写一个跨平台客户端,在提取供使用的档案中,它为每个文件使用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为这个函数包含正确的头文件(我从未见过没有它的操作系统)