c++ - 获取指向包含十六进制值的 C 字符串的指针

标签 c++ c-strings

我有这样的代码

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/

相关文章:

c++ - 是否有帮助组织#includes 的工具?

c++ - 如何在 C++ 中正确分配 char*?

c++ - 在 c_str()、length() 和 size() 之间发现不一致

c - C中单引号和双引号的区别

c++ - 使用 C 样式字符串文字与构造未命名的 std::string 对象的默认建议?

c++ - Windows 调试 Api - 分离不起作用

c++ - 使用读取系统调用 C++ 输出文本

java - 从 c/c++ 定义/实例化 java 对象

c++ - 如何使用模板泛化容器适配器?

带有 strncmp 的 Linux 上的 C 段错误