0

请帮助我编写一个 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]);


}

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

此致

4

5 回答 5

5

您创建一个数组,char然后用字符串(即char *)对其进行初始化。

将类型更改为char *

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

它应该工作得更好。

您还需要更改输出,改为打印字符串

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

当然,更简单的方法是直接打印十六进制数:

printf("%02X", Hex);

那么你就不需要数组了。

于 2013-01-10T18:44:52.077 回答
1

您以错误的方式初始化。实际方法是

 char *hex[] ={"00","01","02" ....}
于 2013-01-10T18:48:18.583 回答
0

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

于 2013-01-10T18:45:52.373 回答
0

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

char hex[] = {0x01,0x02,...};
于 2013-01-10T18:44:41.523 回答
0

我不太明白您要在这里做什么...如果您希望用户按照您的代码所暗示的那样输入十六进制值:

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"将以 format: 格式显示一个值,0x<number>这非常方便,无需0x自己添加。

无需弄乱 char 数组

于 2013-01-10T19:23:57.497 回答