我在编写将十进制转换为十六进制的代码时遇到问题。
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
,它也不会工作,原因有二:它只在函数中更改decString
,hexVal
是局部变量,因此在函数外部无效。
相反,将字符串从hexVal
复制到decString
:strcpy(decString, hexVal);
。
关于c - 无法在C中将字符串转换为十六进制,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10081187/