本文功能:
- 十进制转十六进制
- 多段十六进制组合输出
上代码:
#define num 4 //确定输入数据的最大位数,可以放入下一行作为输入使用 int base_conversion(int data) //convert ADvalue to hex { int HEX = 0; //最终输出,组合好的16进制数 char arr[] = {0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xA,0xB,0xC,0xD,0xE,0xF}; //16进制数组取数 char i=0,j,m; //i,j为循环变量 int hex[num]={0}; //16进制数组,存储单个的16进制数 while(data) { m = data % 16; //求余,可以放入下一行 hex[i ++] = arr[m]; //从最低位开始赋值 data = (data - m) / 16; //数据16进制取整,避免循环处理时出现小数 } HEX = hex[num]; //将最高位赋值 for(j = 0;j如果需要输出为4位或n位16进制数为一组,只需将HEX改为数组,在for循环内改动HEX赋值即可。
调用示例:int main(void) { int AD_value; AD_value = base_conversion(1234); }modbus poll查看输入寄存器输出结果:
ps:纪念我的第一篇CSDN文章
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)