【发布时间】:2012-11-30 22:05:12
【问题描述】:
您好,我正在尝试使用 C 将十进制值转换为十六进制,以便将其存储在我的变量 char data[] 中,然后将数据用于其他用途。有谁知道我该怎么做?我是新来的C
【问题讨论】:
您好,我正在尝试使用 C 将十进制值转换为十六进制,以便将其存储在我的变量 char data[] 中,然后将数据用于其他用途。有谁知道我该怎么做?我是新来的C
【问题讨论】:
#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
这里是代码
【讨论】:
如果您有一个数字存储在“char”变量中,它会以二进制形式存储在机器中。打印变量时,您可以选择如何显示变量。例如,要以十进制显示,您可以这样做:
printf("The value in decimal is %d\n", x);
要以十六进制显示,您可以这样做:
printf("The value in hex is %x\n", x);
您可能希望查看有关 C 的书籍并检查 printf 格式选项,因为您可以对值的显示方式(作为字符、八进制、填充等)做很多事情。请记住,计算机仅以一种方式存储它。没有从一种表示形式到另一种表示形式的转换。
【讨论】:
您可以使用%x 格式说明符和sprintf。传递data作为第一个参数,要打印的值作为最后一个参数:
int value = 12345;
char data[16];
sprintf(data, "%x", value); // This produces 3039
【讨论】: