我如何将十进制变量转换为 c 中的十六进制变量



您好,我正在尝试使用 C 将十进制值转换为十六进制值,以便将其存储在我的变量char data[]上,并在以后将数据用于其他用途。有人知道我该怎么做吗?我是 C

链接到 ideone。

如果你有一个数字存储在"char"变量中,它就会以二进制形式存储在机器中。打印变量时,可以选择变量的显示方式。例如,要以十进制显示它,您可以执行以下操作:

printf("The value in decimal is %dn", x);

要以十六进制显示它,您可以执行以下操作:

printf("The value in hex is %xn", x);

你可能想看一本关于 C 的书并检查 printf 格式选项,因为你可以用值的显示方式做很多事情(作为字符、八进制、填充等)。请记住,计算机仅以一种方式存储它。没有从一种表示形式到另一种表示形式的转换。

#include <stdio.h>
typedef unsigned char       UCHAR;
typedef char                CHAR;  
typedef unsigned short int  UINT16;
typedef unsigned int        UINT32;
typedef float               FLOAT32;
typedef int                 INT32;
typedef short int           INT16;
void DecimalToHex(UCHAR *ucHexStringStored, UINT32 nDecimalValue){
    INT16 anHexValueStored[8];
    INT16 nPartialRemainder,ncnt1;
    UINT16 unLengthOfHexString = 0;
    while(nDecimalValue) {
        nPartialRemainder = nDecimalValue % 16;
        if(nPartialRemainder>9){
            nPartialRemainder = nPartialRemainder-10 + 17;
        }
        anHexValueStored[unLengthOfHexString++] = nPartialRemainder + '0';
        nDecimalValue /= 16;`enter code here`
    }
    CHAR ucHexStringConverted[unLengthOfHexString];
    for(ncnt1 = unLengthOfHexString-1 ; ncnt1>=0 ; ncnt1--){
        ucHexStringConverted[unLengthOfHexString-ncnt1-1]=anHexValueStored[ncnt1];
    };
    ucHexStringConverted[unLengthOfHexString]='';
    for(ncnt1=0 ; ncnt1 <= unLengthOfHexString ; ncnt1++)
    ucHexStringStored[ncnt1]=ucHexStringConverted[ncnt1];
}
int main() {
    UCHAR c[8];
    DecimalToHex(c,-6243);//Decimal value and it will be converted to Hex
    printf("%s",c);
    return 0;
}
    en

此处的 ter 代码

最新更新