c - C中字符串的十六进制

标签 c printf data-conversion

#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:请放心。我是新来的。

最佳答案

您可以使用atoisnprintf解决它。

以下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/

相关文章:

c++ - C++打印字节流

c - 为什么 glClear 不清除我的屏幕?

C - 程序只用 fprintf 写一行

python - 如何将 pythons Decimal() 类型转换为 INT 和指数

c - 我需要关于 sprintf 和 escape null 的建议

java - 为什么我们不能在java中的printf中使用整数精度?只是好奇

python - 将文件转换为字典

c - Lua 中是否有等效的 scanf 函数?

c++ - 操作系统编译时间

c - 如何为同一个父进程创建 4 个子进程并等待 4 个子进程完成?