У меня есть приложение на C ++, у которого есть много API, которые вызываются различными приложениями.
Одна из функций в приложении C ++:
long void ConvertHexToDec (char* hex, int size)
{
// hex - Hex value passed in as char pointer
// size - size in bytes
//Now for e.g., if the values are ...
// hex = 567D & size = 2
for (int i = 0; i < size; i++)
{
printf ("hex[i] = %x", i, hex[i]);
}
// the above FOR loop will print
// hex[0] = 56
// hex[1] = 7D
// I was hoping to get each digit in a separate index like, hex[0] = 5, hex[1] = 6, hex[2] = 7, hex[3] = D
//the application that calls this C++ API is reading values from a hardware
//device and get the values in hex, and then call this API to convert it to
//decimal.
//so in above example it reads memory location 0xB10A and get a 2 byte value
//of 567D
//I see many examples of hex to decimal conversion in C++, but all of them
//uses logic to convert by taking one value at a time.
//so from above example, it will start at D and then convert that to decimal
//and then take 7 and convert that and then next and so on......
//Here there's no way i can do that, as every byte has 2 digits in it.
//And this is my challenge and i have no idea...
}
Что я пробовал:
string str;
str = "";
for (int i = 0; i < size; i++)
{
printf ("hex[i] = %x", i, hex[i]);
str += hex[i];
}
//But when i print out string value it again comes out as....
for (int i = 0; i < size; i++)
{
printf ("str[i] = %x", i, str[i]);
}
//str[0] = 56
//str[1] = 7D
Также пробовал,
std::hex // this gives a junk "decimal" value and that's no where close to the
//real decimal value.
Опять не получаю каждую цифру одну за другой, чтобы преобразовать в десятичную.
Так что же я могу сделать, чтобы преобразовать указатель типа char, содержащий шестнадцатеричный код, в десятичный?