Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 将十六进制打印为字符串_C - Fatal编程技术网

C 将十六进制打印为字符串

C 将十六进制打印为字符串,c,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

请我想你的帮助,写一个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]);


}
但当我试图实现它时,我的编译器出现了错误 在初始化字符串矩阵的过程中,您能告诉我问题出在哪里吗?或者您可能对此有更好的想法


诚挚的问候语

< p>可以通过0xα表示法在C++代码中表示十六进制中的字符;下面将编译

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

可以通过0Xα表示法在C++代码中表示十六进制中的字符;下面将编译

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

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

将类型更改为
char*

char *hex[] = { ... };
而且它应该工作得更好

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

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

当然,更简单的方法是直接打印hext编号:

printf("%02X", Hex);

然后您就不需要数组了。

您创建了一个
char
数组,但随后用字符串初始化它(即
char*

将类型更改为
char*

char *hex[] = { ... };
而且它应该工作得更好

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

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

当然,更简单的方法是直接打印hext编号:

printf("%02X", Hex);

那么你就不需要数组了。

你需要使用
char*hex[]={…}
你需要使用
char*hex[]={…}
你的初始化方式不对。实际方法是

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

你的姓名首字母写错了。实际方法是

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

我不太明白你在这里干什么。。。如果希望用户按照代码所示,以十六进制输入值:

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
,这非常方便,不需要自己添加
0x


不必弄乱字符数组

我不太明白你在这里要做什么。。。如果希望用户按照代码所示,以十六进制输入值:

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
,这非常方便,不需要自己添加
0x


无需弄乱字符数组

printf(“0x%x”,十六进制)看起来是可行的。C或C++,选择一个,因为每个都有不同的方法来执行(代码是C)……比如<代码> char *HEX[] /Cord>将对你有用。<代码> PrimTf(“0x%x”,HEX);<代码>看起来是可行的。C或C++,选择一个,因为每个人都有不同的方法(你的代码是C)……比如<代码> char *HEX[]/Cord>会为你工作。不确定为什么否定的投票,问题是模糊的,正确的答案可能与字符到数字的转换有关。“打印十六进制的代码”,这与打印无关,只是在代码中将数字表示为十六进制,索引将关闭。而代码示例将打印不可打印的字符,如字符1、字符2等。@Joe抱歉“以字符串形式打印十六进制的代码”的原始愿望“对我来说有点不清楚,我想我应该指出编译失败的原因。@Joe此更改肯定会使这行代码合法:
printf(“%c”,hex[hex])OP可能不知道ASCII代码和十六进制之间的差异。尽管如此,我承认1-255个字符值的数组对于计算并没有多大用处……我同意,Tobias和facebook的答案是不完整的,因为
%c
那时可能是错误的。正如您所指出的,这只会创建一个无意义的索引数组,该数组将为1关(如果不是1关,则仍然是无意义的,因为
hex[hex]==(char)hex
)。不确定为什么会出现反对票,这个问题很模糊,正确的答案可能与字符到数字的转换有关。@ebyrob“打印十六进制的代码”,这与打印无关,只是在代码中将数字表示为十六进制,索引将关闭。而代码示例将打印不可打印的字符,如字符1、字符2等。@Joe抱歉“以字符串形式打印十六进制的代码”的原始愿望“对我来说有点不清楚,我想我应该指出编译失败的原因。@Joe此更改肯定会使这行代码合法:
printf(“%c”,hex[hex])OP可能不知道ASCII代码和十六进制之间的差异。尽管如此,我承认1-255个字符值的数组对于计算并没有多大用处……我同意,Tobias和facebook的答案是不完整的,因为
%c
那时可能是错误的。正如您所指出的,这将创建一个无意义的索引数组,该数组将为1 off(如果不是1 off,则仍然是无意义的,因为
hex[hex]==(char)hex
)。