UPDATE: Я могу сделать это легко от байтов до целых чисел, но текущий способ, который я делаю, кажется, не работает так хорошо.Преобразование целых чисел в массивы char (байты)
Вот мой текущий код:
static unsigned char* Int32ToBytes(signed int n)
{
unsigned char bytes[4];
for(int i = 0;i<4;i++)
bytes[3-i] = (n & (255 << (i*8))) >> (i*8);
return bytes;
}
Я использую это, чтобы написать байты:
fwrite(Int32ToBytes(-1), 1 , 4 , file);
Это вывод: FB 9C 8B 28
, когда я хочу его для вывода FF FF FF FF
(подписанные INTS).
Любые идеи? Помощь ценится :)
Разве это не должно быть похоже на байты [3-i] = n & (255 << (i * 8))? – marcadian
idk Вот почему я спросил здесь xD При выполнении этого я получил 0C 1C C7 46 – user1594121
Я что-то пропустил, попробуйте эти байты [3-i] = (n & (255 << (i*8))) >> (i * 8). Кстати, на каком языке вы используете ? – marcadian