天天看點

C語言:十進制、十六進制資料互換

最近寫單片機資料轉換用到了十進制、十六進制互換,将示例Demo分享給各位朋友:

十進制轉換為十六進制,代碼如下所示:

int DectoHex(int dec, unsigned char *hex, int length) 
{ 
    for(int i=length-1; i>=0; i--) 
    { 
  hex[i] = (dec%256)&0xFF; 
  dec /= 256; 
    } 
    return 0; 
}      

各位可以将手動規定的length參數,修改為自動計算資料長度的效果。

十六進制轉換為十進制,代碼如下所示:

unsigned long HextoDec(const unsigned char *hex, int length) 
{ 
    unsigned long rslt = 0; 
    for(int i=0; i<length; i++) 
    { 
  rslt += (unsigned long)(hex[i])<<(8*(length-1-i)); 
    } 
    return rslt; 
}      

除了使用以上方法,還可以使用:sprintf()函數,聲明如下所示:

int sprintf(char *str, const char *format, ...)      

隻需要修改函數參數,就可以便捷實作各類型進制轉換,例如實作十進制、十六進制資料互換,僞代碼如下所示:

sprintf(&data, "十進制12的十六進制是%X", 12);
sprintf(&data, "十六進制0X12的十進制是%d", 0X12);      

拓展學習:

1、C 庫函數 - sprintf()

2、進制轉換工具:

https://tool.lu/hexconvert/

3、C語言:十六進制(HEX)和浮點類型(float、double)轉換

繼續閱讀