Значения шестнадцатеричных байтов в формате DWORD (ascii)

Нужно преобразование байтовых значений в DWORD (на основе ascii)!

Пример:

ВХОД: 1F 12 BA 43 (сохранено в std::vector<BYTE>)

ВЫХОД: 31 46 31 32 42 41 34 33 (ASCII значения ввода) -> также хранятся в std::vector<BYTE>

Самый простой способ сделать это преобразование?

Спасибо

1 ответ

Решение
typedef unsigned char BYTE;
typedef std::vector<BYTE> Vector;

Vector hex2ascii(Vector const &src) {
  Vector result;
  for ( Vector::const_iterator iter = src.begin(); iter!=src.end(); iter++ ) {
    BYTE item = *iter;
    unsigned bits=8;
    do {
      bits -= 4;
      result.push_back("0123456789ABCDEF"[(item>>bits)&15u]);
    } while(bits);
  }
  return result;
}
Другие вопросы по тегам