Шестнадцатеричный в строку в C - PullRequest
0 голосов
/ 31 октября 2018
#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");
}

Результат

Этот код прекрасно работает при передаче аргумента (шестнадцатеричный) и создает строку. Мне нужно то же самое, что и функция; при передаче шестнадцатеричное значение дает строку.

Я пытался использовать функцию, но нет вывода.

#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");
}

Результат

PS: Пожалуйста, будьте осторожны со мной Я новичок в этом.

1 Ответ

0 голосов
/ 31 октября 2018

Вы можете использовать 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;
}
...