Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Преобразование HEX в ASCII и наоборот.

20K
04 января 2009 года
_Taurus_
24 / / 30.08.2007
Подскажите пожалуйста как перевести HEX строку в ASCII текстовую строку. Пример "4558414D504C45" = "EXAMPLE"
с помощью sprintf\sscanf ???

функцию перевода ASCII в HEX я реализовал:
Код:
char* ascii2hex(char* ascii)
{
AnsiString STR="";
AnsiString TEMP="";
for(int i = 0;i <strlen(ascii);i++)
 {
 TEMP.sprintf("%x",ascii);
 STR=STR+""+TEMP;
 }
STR=strupr(STR.c_str());
return STR.c_str();
}

А вот назад преобразовать не получается...
9
04 января 2009 года
Lerkin
3.0K / / 25.03.2003
Может, на какие мысли наведет:
Код:
#include <stdio.h>
#include <stdlib.h>

int main( void )
{
    int number;
    char *str = "0000004F";

    sscanf(str, "%x", &number);
    printf("%c\n", (char)number);

    return 0;
}
20K
04 января 2009 года
_Taurus_
24 / / 30.08.2007
Ну да...как то аж стыдно стало :) на мысли навело :)
20K
06 января 2009 года
_Taurus_
24 / / 30.08.2007
Вот переработал код. Проверил. С строками работает отлично, но как только натыкается на нечто такое: 00BED3410000F8BBB90400000000FCBBB904A4FF1A06F8F04100FFFFFFFF
то не может его обработать. Подскажите ошибку пожалуйста.
Код:
AnsiString hex2ascii(char* hex)
{
AnsiString String,S,temp;
char* str;
int NUM;
for(int i=0;i<strlen(hex);i++)
{
temp=AnsiString(hex)+AnsiString(hex[i+1]);
str=temp.c_str();
sscanf(str,"%x",&NUM);
S.sprintf("%c",(char)NUM);
String=String+S;
i++;
}
return String.c_str();
}
288
09 января 2009 года
nikitozz
1.2K / / 09.03.2007
Ваша строка начинается с символов "00", что соответствует нулевому байту. Кстати, раз уж пишите в Builder'е, можете использовать функцию HexToBin
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог