我有这样的代码
char *p = "\xFF\xFF\xFF\xFF\xFF\xFF";
for(int i = 0; i<6; i++)
printf(" %d ", *(p + i));
但是输出是-1 -1 -1 -1 -1 -1,这不是我想要的。我想了 255 255 255 255 255 255。
所以,我修改了上面的代码:
unsigned char *p = "\xFF\xFF\xFF\xFF\xFF\xFF";
for(int i = 0; i<6; i++)
printf(" %d ", *(p + i));
但出现错误:““const char *”
类型的值不能用于初始化 “unsigned char *”类型的实体
最后我这样修改了一下,成功了。
unsigned char *p = (unsigned char*) "\xFF\xFF\xFF\xFF\xFF\xFF";
for(int i = 0; i<6; i++)
printf(" %d ", *(p + i));
我认为这是一个很好的修改,对吧?
最佳答案
使用
for(int i = 0; i<6; i++)
printf(" %u ", (unsigned char)(*(p + i)));
打印。
关于c++ - 获取指向包含十六进制值的 C 字符串的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21278935/