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();
}
Преобразование HEX в ASCII и наоборот.
с помощью sprintf\sscanf ???
функцию перевода ASCII в HEX я реализовал:
Код:
А вот назад преобразовать не получается...
Код:
#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;
}
#include <stdlib.h>
int main( void )
{
int number;
char *str = "0000004F";
sscanf(str, "%x", &number);
printf("%c\n", (char)number);
return 0;
}
Ну да...как то аж стыдно стало :) на мысли навело :)
то не может его обработать. Подскажите ошибку пожалуйста.
Код:
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();
}
{
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();
}
Ваша строка начинается с символов "00", что соответствует нулевому байту. Кстати, раз уж пишите в Builder'е, можете использовать функцию HexToBin