gpt4 book ai didi

c++ - Boost CRC CCITT 输出值不同

转载 作者:行者123 更新时间:2023-11-28 07:14:51 26 4
gpt4 key购买 nike

我正在使用 boosts crc CCITT。我需要随意输入 crc 计算的值,因此数组大小会有所不同,这就是我选择动态数组的原因。但问题是当我使用动态数组时得到不同的结果,这是为什么?还是我在这里做错了什么?

unsigned char test[] = { 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39 };
// returns 0x29B1 which is correct.
int dynsize;
std::wstring incoming ( L"313233343536373839" );
dynsize = ( incoming.size() / 2 ) + 1;
unsigned char* data = new unsigned char [dynsize];
data[0] = 0x31;
data[1] = 0x32;
data[2] = 0x33;
data[3] = 0x34;
data[4] = 0x35;
data[5] = 0x36;
data[6] = 0x37;
data[7] = 0x38;
data[8] = 0x39;
// that returns 0x5349 whis is not correct.

std::size_t const data_len = sizeof ( data ) / sizeof ( data[0] );
boost::crc_basic<16> crc_ccitt1( 0x1021 , 0xFFFF , 0 , false , false );
crc_ccitt1.process_bytes ( data , data_len );

Ofc 稍后将通过输入定义变量 incoming

解决方法:

std::size_t const data_len = sizeof ( data ) / sizeof ( data[0] ); // deleted
dynsize = ( incoming.size() / 2 );
crc_ccitt1.process_bytes ( data , dynsize );

最佳答案

sizeof(data) 是指向 unsigned char 类型的指针的大小。因此,这一行总是等于 4(在 x86 中,指针的大小是 4 个字节,unsigned char 是一个字节):

std::size_t const data_len = sizeof ( data ) / sizeof ( data[0] ); 

data_len = 4/1;

关于c++ - Boost CRC CCITT 输出值不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20403825/

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