将Hex打印为字符串

时间:2013-01-10 18:41:36

标签: c

我希望您的帮助能够编写一个C语言代码,用于打印字符串中的十六进制。

我做了这样的事情:

main()
{

  char hex[]={ "00",    "01",   "02",   "03",   "04",   "05",   "06",   "07",   "08",   "09",   "0A",   "0B",   "0C",   "0D",   "0E",   "0F",..................., "FF"};

int Hex;

printf("\nEnter the Hex No.\n");
scanf("%d",&Hex);

printf("\n String value is:");
printf("%c",hex[Hex]);


}

但是当我尝试实现它时,我的编译器出错了 在初始化字符串矩阵时,你能告诉我问题是什么,或者你可能对此有更好的想法吗?

祝你好运

5 个答案:

答案 0 :(得分:5)

您创建一个char数组,但然后使用字符串(即char *)初始化它。

将类型更改为char *

char *hex[] = { ... };

它应该会更好。

您还需要更改输出,而不是打印字符串

printf("%s", hex[Hex]);

当然更容易直接打印hext数字:

printf("%02X", Hex);

然后你不需要数组。

答案 1 :(得分:1)

你的方式是错误的。实际的方式是

 char *hex[] ={"00","01","02" ....}

答案 2 :(得分:0)

您可以通过0x ##表示法在c ++代码中以十六进制表示字符;以下将编译。

char hex[] = {0x01,0x02,...};

答案 3 :(得分:0)

您需要使用char* hex[] = {...}

答案 4 :(得分:0)

我不太明白你的目的是什么......如果你希望用户 输入十六进制值 ,你的代码暗示: / p>

int Hex;

printf("\nEnter the Hex No.\n");//This tells me you want me to enter 12A4 (a hex value)

然后你应该扫描一个十六进制值:

scanf("%x",&Hex);  // The %x tells scanf that the incoming value is base 16

如果您希望用户在dec(基数为10)中输入一个数字,那么您将以十六进制显示它想要的内容:

int Hex;
printf("\nEnter the number to convert to Hex.\n");
scanf("%d",&Hex);

printf("\n String value is:");
printf("%#x",Hex);

请注意,格式字符串"%#x"将以0x<number>格式显示一个值,非常方便您无需在自己身上添加0x

无需乱用char数组