как преобразовать строку в шестнадцатеричный код ASCII в C - PullRequest
1 голос
/ 15 декабря 2010

У меня есть такая строка "Hello"

Теперь мне нужно преобразовать его в шестнадцатеричный код кода ASCII для каждого символа, чтобы я мог вставить его в большой двоичный объект базы данных.

Кто-нибудь может предложить какую-либо библиотечную функцию для преобразования строки?

Ответы [ 2 ]

3 голосов
/ 15 декабря 2010

Вы можете просто отформатировать символы в шестнадцатеричный код через sprintf .

#include <stdio.h>

int main(int argc, char* argv[]) {
  char buf[255] = {0};
  char yourString[255] = { "Hello" };
  for (size_t i = 0; i < strlen(yourString); i++) {
    sprintf(buf, "%s%x", buf, yourString[i]);
  }
  printf(buf+ '\n');
  return 0;
}
1 голос
/ 05 октября 2017

Попробуйте преобразовать строку / символ ascii в строку шестнадцатеричного представления.

Очень важно , если вы хотите иметь правильное преобразование с использованием sprintf, это использовать переменные без знака. Некоторые строки символов имеют формат Unicode , и их необходимо сначала преобразовать в "unsigned char" .

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

int main(void){
    unsigned char word[17], unsigned outword[33];//17:16+1, 33:16*2+1
    int i, len;

    printf("Intro word:");
    fgets(word, sizeof(word), stdin);
    len = strlen(word);
    if(word[len-1]=='\n')
        word[--len] = '\0';

    for(i = 0; i<len; i++){
        sprintf(outword+i*2, "%02X", word[i]);
    }
    printf("%s\n", outword);
    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...