找不到 libsolv librray 的 solvable_lookup_bin_checksum() 返回的无符号字符字符串的大小

Unable to find size of unsigned char string returned by solvable_lookup_bin_checksum() of libsolv librray

提问人:shivani 提问时间:7/20/2023 最后编辑:shivani 更新时间:7/20/2023 访问量:24

问:

我正在尝试使用 libsolv 库的 solvable_lookup_bin_checksum() 收集包的二进制校验和。但是我不确定如何找到返回的无符号字符串长度,因为它包含二进制数据并且它不是 NULL 终止的(不能使用传统的 string.c 函数)。

附上我的代码片段,我试图将返回字符串复制到其他无符号字符字符串中,但由于长度问题而无法获得正确的结果。

unsigned char *pszTemp = solvable_lookup_bin_checksum(pSolv, SOLVABLE_CHECKSUM, &checksumtype);
size_t pszTemp_size = strlen((const char*)pszTemp) + 1;
unsigned char *pszChecksum= (unsigned char *)calloc(pszTemp_size, sizeof(unsigned char));
memcpy(pszChecksum, pszTemp, pszTemp_size);

让我知道您的建议,我们如何计算返回的无符号字符串长度。

C 二进制 字符 校验和 unsigned

评论

0赞 Shawn 7/20/2023
unsinged?请发布真实代码。
0赞 shivani 7/20/2023
这只是一个真实的代码,请原谅拼写错误。unsinged 是错别字,请将其称为 unsigned
0赞 chux - Reinstate Monica 7/20/2023
@shivani,“它不是 NULL 终止的”和“我们如何计算返回的无符号字符串长度”。 --> 在 C 中,字符串始终null 字符结尾,否则它就不是字符串。 不是“返回字符串”。它是一个指针。它指向一个字节。它指向的字节长度不是 的一部分。长度需要一些其他信息来源。当前发布的代码缺乏上下文来了解长度。unsigned char *pszTemppszTemp
0赞 stark 7/20/2023
大小是每个校验和类型的固定值

答: 暂无答案