在一个用十六进制值填充的C char数组中,长度是多少?

时间:2014-03-05 19:29:00

标签: c arrays

如果你有:

unsigned char data[] = {0x00, 0x02, 0xEE};

长度是3还是十六进制值代表两个或更多字节,因此等于6?

2 个答案:

答案 0 :(得分:3)

数组的类型为unsigned char[],因此它包含的值(大到)unsigned char s,应该是1个字节。由于数组包含3个值,因此其总大小为3个字节。

sizeof运算符可以帮助您解决这些问题:

unsigned char data[] = {0x00, 0x02, 0xEE};

int main(void) {
  printf("size of array in bytes: %d\n", sizeof data);
  printf("size of single element: %d\n", sizeof *data);
  printf("quotient:               %d\n", (sizeof data) / (sizeof *data));
  return 0;
}

答案 1 :(得分:2)

十六进制的一个数字(或字符)最多可以用4位表示。 因为,0-F意味着0000(0)到1111(15)。 因此,上面的数组将占用3个字节,因为data[]的每个元素由一个字节(两个半字节)表示。