【问题标题】:How i can convert a decimal variable to hex in c?如何在c中将十进制变量转换为十六进制?
【发布时间】:2012-11-30 22:05:12
【问题描述】:

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

【问题讨论】:

    标签: c hex decimal


    【解决方案1】:
    #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]='\0';
        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
    

    这里是代码

    【讨论】:

      【解决方案2】:

      如果您有一个数字存储在“char”变量中,它会以二进制形式存储在机器中。打印变量时,您可以选择如何显示变量。例如,要以十进制显示,您可以这样做:

      printf("The value in decimal is %d\n", x);
      

      要以十六进制显示,您可以这样做:

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

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

      【讨论】:

        【解决方案3】:

        您可以使用%x 格式说明符和sprintf。传递data作为第一个参数,要打印的值作为最后一个参数:

        int value = 12345;
        char data[16];
        sprintf(data, "%x", value); // This produces 3039
        

        Link to ideone.

        【讨论】:

          猜你喜欢
          • 2018-03-25
          • 2017-07-31
          • 2013-07-20
          • 2012-06-17
          • 2023-03-31
          • 2021-06-26
          • 1970-01-01
          • 2015-12-03
          • 2015-09-13
          相关资源
          最近更新 更多