C/C++如何将int转回string(一个字)?

C/C++ How to convert back int to string (a word)?

在 C 中,我从 txt 文件中读取一个字符串,例如字符串 "hello",所以我有:

F=fopen("text.txt","r");
fscanf(F,"%s\n",string);

现在,如果我想将这个字符串转换为十六进制和十进制,我可以这样做:

for (i=0; i<strlen(string); i++)
{
   sprintf(st, "%02X", string[i]);  //Convert to hex
   strcat(hexstring, st);

   sprintf(st, "%03d", string[i]);  //Convert to dec
   strcat(decstring, st);
}

现在,我的问题是:我想做逆运算,但是怎么做呢? 这是我转换 "hello"

时的输出
   hex-> 68656c6c6f
   dec-> 104101108108111

我想从“68656c6c6f”或“104101108108111”回到"hello",我该怎么做?

(基本上我想做类似这个网站的事情:http://string-functions.com/; 字符串到十六进制转换器、十六进制到字符串转换器、十进制到十六进制、转换器、十六进制到十进制转换器)

挑战是要意识到你有一个十六进制的 string 和一个十进制的 string,这意味着你有一个字符串表示价值观,而不是价值观本身。因此,在转换回原始字符串之前,您需要将字符串表示形式转换为适当的数值。

假设您有 hex 作为双字节十六进制字符对的字符串表示,以下将 return 来自 68656c6c6f 的原始字符串 hello

/* convert hex string to original */
char hex2str[80] = {0};
char *p = hex2str;
int i = 0;
int itmp = 0;

while (hex[i])
{
    sscanf (&hex[i], "%02x", &itmp);
    sprintf (p, "%c", itmp);
    p++;
    i+=2;
}
*p = 0;

printf ("\n hex2str: '%s'\n\n", hex2str);

输出

$ ./bin/c2h2c < <(printf "hello\n")

 hex2str: 'hello'

简短的工作示例

#include <stdio.h>
#include <string.h>

#define MAXS 64

int main (void) {

    char hex[] = "68656c6c6f";
    char hex2str[MAXS] = {0};
    char *p = hex2str;
    int itmp = 0;
    int i = 0;

    /* convert hex string to original */
    while (hex[i])
    {
        sscanf (&hex[i], "%02x", &itmp);
        sprintf (p, "%c", itmp);
        p++;
        i+=2;
    }
    *p = 0;

    printf ("\n hex2str: '%s'\n\n", hex2str);

    return 0;
}

输出

$ ./bin/c2h2c

 hex2str: 'hello'