#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main ( int argc, char *argv[] )
{
char *string = argv[1];
int i;
char* p = string;
for (i=0; i<strlen(string); i++)
{
int c;
for (;p[0] && p[1] && sscanf(p, "%2x", &c); p += 2) printf("%c", c);
}
printf("\n");
}
Result
传递论据(十六进制)并生成字符串时,此代码可以正常工作。
我需要与功能相同的功能;传递十六进制值时会给出一个字符串。
我尝试使用一个函数,但是没有输出。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int fun (char * s)
{
char *string = s;
int i;
char* p = string;
for (i=0; i<strlen(string); i++)
{
int c;
for (;p[0] && p[1] && sscanf(p, "%2x", &c); p += 2) printf("%c", c);
}
printf("\n");
}
int main()
{
fun("Hello");
}
Result
PS:请放心。我是新来的。
最佳答案
您可以使用atoi
和snprintf
解决它。
以下code
可以工作:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main (int argc, char *argv[])
{
if (argc != 2)
return -1;
char string[32];
snprintf(string, sizeof string, "0x%08X", atoi(argv[1]));
printf("%s\n",string);
return 0;
}
关于c - C中字符串的十六进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53079783/