C 将十六进制打印为字符串
请我想你的帮助,写一个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
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
)。