我在编写将十进制转换为十六进制的代码时遇到问题。

void decToHex (char *decString){
    char hexVal[100];
    sprintf(hexVal,"%x", *decString);
    *decString = hexVal;
    return;
}

编译错误:警告:赋值使指针指向整数
没有强制转换(默认启用);说到“*decString”行
=hexVal;“我试图将指针值设置为新发现的十六进制值。
有人知道我做错了什么吗?我已经阅读了一些其他的文章,这些文章说这可能是编译器的问题,但是我们的类需要使用内置在putty服务器中的标准c99编译器。有什么办法吗?我也试着基于模16的思想创建一个int数组,但是我有更多的问题。

最佳答案

*decString是一个字符。hexVal(在此上下文中)是指向char的指针,因此您尝试将地址存储在char中。因此产生了错误。
即使执行decString=hexVal,它也不会工作,原因有二:它只在函数中更改decStringhexVal是局部变量,因此在函数外部无效。
相反,将字符串从hexVal复制到decStringstrcpy(decString, hexVal);

关于c - 无法在C中将字符串转换为十六进制,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10081187/

10-11 08:35