将十六进制值(ASCII)转换为文本
我正在尝试将ASCII十六进制值(0x61或61)转换为将十六进制值(ASCII)转换为文本,c,ascii,C,Ascii,我正在尝试将ASCII十六进制值(0x61或61)转换为char值(61=a等)而不使用atoi,scanf,strcat 我正在将getchar()保存到temp变量中,然后将第一个(6)保存到数组中,然后将第二个(1)保存到数组中,现在我想将这两个变量转换为ASCII值 68656c6c6f0d0a = hello void asd(char fde) { char asmg[3]; asmg[0] = "0x"; asmg[1] = "6"; asmg[2
char
值(61=a等)而不使用atoi
,scanf
,strcat
我正在将getchar()
保存到temp变量中,然后将第一个(6)保存到数组中,然后将第二个(1)保存到数组中,现在我想将这两个变量转换为ASCII值
68656c6c6f0d0a = hello
void asd(char fde)
{
char asmg[3];
asmg[0] = "0x";
asmg[1] = "6";
asmg[2] = "1";
printf("%c", asmg);
}
我希望它打印“a”,但它不起作用
类似的,但这不起作用。我需要将asmg[0]、[1]、[2]放在一个字符中,然后它就可以工作了。
谢谢:)不确定您到底想做什么,但这可能会有所帮助
int main(int argc, char **argv)
{
int hex[6] = {0x68, 0x65, 0x6C, 0x6C, 0x6F};
int i = 0;
for(i = 0; i <6; i++)
{
printf("%c", hex[i]);
}
printf("\n");
}
int main(int argc,char**argv)
{
int hex[6]={0x68,0x65,0x6C,0x6C,0x6F};
int i=0;
对于(i=0;i,您可以使用此函数将Hexastring转换为ASCII
void hexToAscii(unsigned char *buf, int size, char *str) {
int i;
for (i = 0; i < size; ++i) {
sprintf(str + (i * 2), "%02X", buf[i]);
}
}
void hexToAscii(无符号字符*buf,整数大小,字符*str){
int i;
对于(i=0;i
不要让get将字符串上的最后一个元素设置为null。\include
#include <stdio.h>
int main(void){
char hex[] = "68656c6c6f0d0a";
char text[(sizeof(hex)+1)/2];
int i = 0, j = 0;
while(hex[i]){
int up = '0' <= hex[i] && hex[i] <= '9' ? hex[i] - '0' : hex[i] - 'a' + 10;//lowcase
if(hex[++i] == '\0'){
printf("invalid format\n");
return -1;
}
int low = '0' <= hex[i] && hex[i] <= '9' ? hex[i] - '0' : hex[i] - 'a' + 10;//lowcase
text[j++] = up * 16 + low;
++i;
}
text[j] = 0;
printf("%s", text);
return 0;
}
内部主(空){
字符十六进制[]=“68656C6F0D0A”;
字符文本[(sizeof(hex)+1)/2];
int i=0,j=0;
while(十六进制[i]){
int up='0'您能提供一个代码示例吗?您是否有充分的理由不使用任何库函数?因为这些函数是专门为该任务设计的。如果您想了解其背后的概念,我建议查看一些C库的源代码(例如glibc)。想想十六进制是什么意思。字符“6”对于您试图提取的字节值意味着什么?它与“1”有什么不同?模式是什么?printf(“%c\n”,(char)strtol(fgets((char[6]){0},6,stdin),NULL,16))
?您的词汇表有点不正确。您想转换十六进制字符串吗"616865..."对于ASCII字符,其中0x61表示的字符是“a”。这就是为什么scanf
和atoi
在您的作业中被禁止的原因。您正在尝试进行字符串到数字的转换,结果恰好是数字代表一个字符。感谢您的帮助,这对我帮助很大,但我只读取了一个字符。我的意思是,f第一个getchar()给我6,第二个getchar给我8,现在我需要把前缀0x,char something[]={“0x”,“6”,“8”};现在我需要把它打印成“h”