Значения шестнадцатеричных байтов в формате 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;
}