gpt4 book ai didi

c++ - 读取 CRC32 文件

转载 作者:行者123 更新时间:2023-11-30 05:26:54 31 4
gpt4 key购买 nike

我是一名 java 程序员,正在尝试学习 c++。我有一个有效的 CRC32 函数,但它从数组中获取字符并计算其 CRC32。

我想读取文件并计算文件的 CRC32。

我应该读取文件、拆分它并将所有数据放入数组还是有任何简单的方法?

unsigned int crc32(unsigned char *message) {
int i, j;

unsigned int byte, crc;

i = 0;
crc = 0xFFFFFFFF;
while (message[i] != 0) {
byte = message[i]; // Get next byte.

crc = crc ^ byte;

for(j = 7; j>=0; j--){
crc = (crc >> 1) ^ (crc & 1 ? 0xEDB88320 : 0);
}
i = i + 1;
}
return ~crc;
}

int main()
{
unsigned char a[] = {'e',0};

cout << std::hex <<"0x" << crc32(a);

return 0;

}

最佳答案

您可以使用 fread 或 stream API 将文件加载到一个 block 中,然后在其上应用 crc32 函数。或者您可以分段加载它并以这种方式应用该功能。对于超过一定大小的文件,这是最好的解决方法,尽管您确实可以在不需要任何分块的情况下达到相当大的大小(感谢 x64 大地址空间、操作系统处理的虚拟内存、内存映射等)。

总的来说,无论使用何种编程语言,设计程序的相同原则都适用,或多或少 - 通过切换语言你得到的是不同的 API,不同的抽象(尽管越来越多的语言似乎融合在同一组基于类的面向对象、lambda、async/await 等)。同样的建议也适用于 Python、Java、C++、Ruby 等

关于c++ - 读取 CRC32 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37587628/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com