昨天寫了乙個方法,可以將嵌入式c常用的uint8_t資料轉為乙個字元,但是程式有警告,尷尬症發作甚是不爽,於是在今天解決了這個問題。
c語言中的char是一位元組,也就是8個二進位制位,正好可以表示成2個16進製制的數。但是第一位是符號位,而微控制器用的c語言中常常不牽扯負數,所以更常見的就是使用無符號的char(unsigned char),再定義為uint8_t(typedef unsigned char uint8_t;),這樣子就可以用8個二進位制位表示成2個16進製制的數,如1111 1110就是0xfe,如果需要的不是16進製制數,而是乙個字元,那麼可以用以下方法來實現16進製制轉為字元。
#include
#include
typedef unsigned char uint8_t;
char hextoch (uint8_t old);
uint8_t hextochar(uint8_t temp);
int main();
uint8_t str[10];
uint8_t dst[10];
for(i = 0; i<5;i++)
for(i = 0; i<10;i++)
for(i = 0; i<10;i++)
return 0;
}uint8_t hextochar(uint8_t temp)
else
return dst;
} 注意,hextochar函式中,由於傳入的引數都是無符號的,故不用判斷正負。
需要小寫的字元可修改此處dst = temp -10 +』a』;
執行結果
c語言將十進位制數轉換為16進製制的函式
有3種方式實現,其中兩種是使用系統函式,另一種是直接自己編寫。使用系統函式實現要加入 include 自己編寫則不需要這個標頭檔案。下面的 就是3種方式的實現,包括2位的整數和任意整數 2的31次方以內 都可以。可自己選擇需要的實現方式。利用系統函式有 1.char itoa int value,c...
將數字轉換為16進製制
給定乙個整數,寫乙個函式將其轉換為16進製制。對於負整數,需要使用二進位制補碼。樣例1 輸入 26 輸出 1a 樣例2 輸入 1 輸出 ffffffff 16進製制的所有字母 a f 必須為小寫。16進製制字串不能包含額外的前導0。如果數字為零,將它表示為單個字元 0 否則,16進製制數的第乙個字元...
將16進製制數轉換為8進製數輸出 演算法
給定n個十六進製制正整數,輸出它們對應的八進位制數。輸入格式 輸入的第一行為乙個正整數n 1 n 10 接下來n行,每行乙個由09 大寫字母af組成的字串,表示要轉換的十六進製制正整數,每個十六進製制數長度不超過100000。輸出格式 輸出n行,每行為輸入對應的八進位制正整數。將16進製制逐位轉換為...