【发布时间】:2018-06-11 03:30:29
【问题描述】:
我有一个 const char* 指向十六进制格式的数据,我需要找到我正在检查的数据的长度 NUL-terminator 但是当 \x00 出现时它检测为 NUL -终止符返回不正确的长度。
我怎样才能解决这个问题?
const char* orig = "\x09\x00\x04\x00\x02\x00\x10\x00\x42\x00\x02\x00\x01\x80\x0f\x00"
uint64_t get_char_ptr_len(const char *c)
{
uint64_t len = 0;
if (*c)
{
while (c[len] != '\0') {
len++;
}
}
return len;
}
【问题讨论】:
-
您必须将数组的长度作为附加参数传递给
get_char_ptr_len。虽然这是一个重言式,因为你已经知道长度;) -
你不能。零就是零。
-
知道了,我得手动获取大小并对其进行硬编码
-
您总是可以将它包装在一个结构中以将指针和大小保持在一起。