如何获取为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
元素之后会有数据一样。
如何获取为
unsigned char*
的数组的长度?
根据您提供的示例,您试图检索array []
而不是array *
的长度。可以使用关键字sizeof
(sizeof(ot)
)来实现。
但是,当涉及到指针(例如unsigned char *
)时,您需要事先知道其大小,因为使用sizeof
会返回该指针本身的分配大小,而不是该指针的实际内容大小。