获取C中无符号字符数组的长度

问题描述 投票:0回答:1

如何获取为unsigned char*的数组的长度?

这是我的数组:

unsigned char ot[] = { 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x0, 0x0, 0x0, 0x0, 0x0 };

我试图这样使用strlen()int length = strlen((char*) ot);

它返回我直到第一个0x0的长度11,但是我的数组对此有何变化? (检查最后一个元素)

unsigned char ot[] = { 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x0, 0x0, 0x0, 0x0, 0xa1 };

然后我仍然得到11个元素,如何获得整个数组的“实际”长度?就像如果在0x0元素之后会有数据一样。

c arrays hex string-length variable-length
1个回答
0
投票

如何获取为unsigned char*的数组的长度?

根据您提供的示例,您试图检索array []而不是array *的长度。可以使用关键字sizeofsizeof(ot))来实现。

但是,当涉及到指针(例如unsigned char *)时,您需要事先知道其大小,因为使用sizeof会返回该指针本身的分配大小,而不是该指针的实际内容大小。

© www.soinside.com 2019 - 2024. All rights reserved.