Показать сообщение отдельно
Старый 08.02.2012, 17:54   #2   
Форумец
 
Аватар для Spectator
 
Сообщений: 39,997
Регистрация: 27.05.2003
Возраст: 46

Spectator вне форума Не в сети
#include <stdlib.h>
long int strtol(const char *start, char **end, int radix);

start - это строка, в end будет хранится первый адрес первого символа после сконвертированного значения, в radix передай 16

На выходе будет нужный байт.

Так как функция будет пытаться преобразовать по максимуму, нужно будет каждые два символа записывать в отдельную строковую переменную.

А вообще быстрее и проще это сделать вручную, через switch:

long CharToIntVal(char a)
{
switch (a) {
case '0': return 0;
case '1': return 1;
case '2': return 2;
case '3': return 3;
case '4': return 4;
case '5': return 5;
case '6': return 6;
case '7': return 7;
case '8': return 8;
case '9': return 9;

case 'A': return 10;
case 'B': return 11;
case 'C': return 12;
case 'D': return 13;
case 'E': return 14;
case 'F': return 15;

case 'a': return 10;
case 'b': return 11;
case 'c': return 12;
case 'd': return 13;
case 'e': return 14;
case 'f': return 15;

default: return -1;
}
}

CharToIntVal(arr[0]*16) + CharToIntVal(arr[1])
CharToIntVal(arr[2]*16) + CharToIntVal(arr[3])

и т.д.
  Ответить с цитированием