你把类型搞错了。
你本意是0x01为字符串吧,但定义时候定义错了,变成整数了。
实际上,datatest[]你定义的是一维数组,数组中的元素的值,就是0x01, 0x04等。
看你的代码,应该定义成2维数组:
{"0x01","0x02"...}这种形式。我猜得可对?
//修改你的代码,没考虑逻辑,没考虑计算结果是否正确。
#include
const char datatest[][5]={
"0x01", "0x04", "0x28", "0x03", "0xE8", "0x03", "0xE8", "0x03", "0xE8", "0x01",
"0x09", "0x00", "0x00", "0x00", "0x00", "0x00", "0x00", "0x00", "0x00",
"0x00", "0x00", "0x00", "0x00", "0x00", "0x00", "0x00", "0x00", "0x00",
"0x79", "0x0A", "0xC6", "0x69", "0x03", "0xE8", "0x01", "0xBF", "0xE7",
"0x00", "0x00", "0x00", "0x00", "0xC9", "0xE9", "0xFF"}; //输入的十六进制数组
int hex2dec(const char *hex) //取出对应的十六进制转换成十进制,以便计算
{
int i,t,s=0;
for(i=0; hex[i]; i++)
{
if(hex[i]<='9')
t=hex[i]-'0';
else t=hex[i]-'A'+10;
s=s*16+t;
}
return s;
}
int main()
{
//例如要取出datatest中第三,四组数据进行运算,我原本是这么写的但是有错
int a,b;
float temp1=0, temp;
a=hex2dec(datatest[3]);
b=hex2dec(datatest[4]);
temp=a*256+b/10;
temp1=((float)( (int)( (temp+0.005)*100 ) ) )/100; // 运算结果保留两位小数
printf("%f\n", temp1);
return 0;
}
错误:
1、a=hex2dec(char *datatest[3]); 需要改成a=hex2dec(&datatest[3]);
因为int hex2dec(char *hex)函数中形参为指针。
2、temp==((float)( (int)( (temp1+0.005)*100 ) ) )/100;这句话中”==“号是判断语句,而不是赋值语句,你是要进行赋值还是判断?