Member 12330615 Ответов: 1

Как преобразовать строку char в hex?


Я использую MFC с VC++

Я хочу скрыть строку в шестнадцатеричном формате данных на 2 символа каждый.

char* stringA = " 0305CD6B";

char hexvalB[4];/ / hexvalB - это один байт.

Я хочу преобразовать stringA в hexvalB, что означает

'03' - > 0x03 -> hexvalB[0];
'05' - > 0x05 -> hexvalB[1];
'CD' - > 0xCD - > hexvalB[2];
'6B' - > 0x6B - > hexvalB[3];

Что я уже пробовал:

3 часа потрачены впустую на то, чтобы какие-то функции сделали возможным переход от символа к 1 байту.

1 Ответов

Рейтинг:
1

OriginalGriff

Ваш комментарий неверен:

char hexvalB[4];// hexvalB is one byte.
Это не" один байт", это массив из четырех байтов. И если вы хотите хранить в нем чистые двоичные числа, вы должны объявить его как unsigned char, нет char.
На самом деле я бы использовал числовое значение вместо массива и просто использовал стандартные функции:
unsigned long lValue = strtoul(stringA, NULL, 16);

Если после этого он вам действительно понадобится в качестве массива, я бы его бросил:
hexvalB = (unsigned char*) &lValue;

Для этого есть веские причины, которые связаны с выравниванием адресов значений, которые не являются одиночными байтами, и проблемами, которые вы можете получить, если они ошибочны.