Я пытаюсь поставить шестнадцатеричные значения в Byte[]
, Пытаясь достичь 78,66,1E, B5,4F, E7,67,63Ввод Hex в массив байтов
#define BYTE unsigned char
int num = 1;
long long hex[]
{
0x78661EB54FE76763,
};
int main()
{
for (int c = 0; c < num; c++)
{
printf("%llx\n", hex[c]);
unsigned int number = hex[c];
unsigned int ef = number & 0xff;
unsigned int cd = (number >> 8) & 0xff;
unsigned int ab = (number >> 16) & 0xff;
printf("%x", number & 0xff);
BYTE data2[8]{
ef, cd, ab
};
}
}
Обновление:
В основном у меня есть массив из 30 нечетных шестнадцатеричных значений. Я пытаюсь пропустить этот массив с именем hex [], затем для каждого шестнадцатеричного значения разделите его на 2, т.е. 78,66,1E, B5,4F, E7,67,63, затем добавьте каждый в массив типа BYTE, который будет удерживайте шестнадцатеричное значение в 8 пар, поэтому данные [0] будут иметь значение 78 до данных [8], которое будет иметь значение 63. Поэтому я могу затем передать массив типа BYTE другому методу для дальнейшей работы
Это не будет компилироваться как есть. Поскольку long long hex [] 'является объявлением с инициализаторами, для утверждения требуется знак' = 'перед первым вьющимся:' {'и терминатор оператора C:'; 'после закрытия curly:'} '. А запятая после '0x78661EB54FE76763' должна быть удалена. – ryyker
будет скомпилирован для вас, обновленный –
, вы продолжаете говорить «в основном у меня есть массив из 30 нечетных шестнадцатеричных значений». Что вы имеете в виду, ваш образец показывает один длинный длинный с одним большим значением. Каковы ваши реальные исходные данные, покажите это в вопросе – pm100