如何在不使用 sprintf 的情况下在 C 中实现这些转换?
20 => 0x20
12 => 0x12
目前我有:
int year = 12;
int month = 10;
int day = 9;
unsigned char date[3];
date[0] = year & 0xFF;
date[1] = month & 0xFF;
date[2] = day & 0xFF;
日期将包含 { 0x0C, 0x0A, 0x09 } 但我希望它是 { 0x12, 0x10, 0x09 }
最佳答案
您只需检索以十进制为基数的每个数字,然后将其乘以对应的十六进制数。
#include <stdio.h>
int hex(int v){
int total = 0;
int resultbase = 1;
while(v > 0 ){
total += resultbase * (v % 10);
resultbase *= 16;
v /= 10;
}
return total;
}
int main(){
printf ("12 => %x, 20 => %x\n", hex(12), hex(20));
return 0;
关于C - 将十进制数转换为压缩 BCD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12798375/