Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Как изменить первый байт у long???


Автор: nikakoi 3.7.2007, 20:17
Добрый день... Подскажите плз каким образом я могу поменять у long первый байт?(((

Автор: 586 3.7.2007, 20:24
Код
long x;
*(BYTE*)&x=127;

Автор: archimed7592 3.7.2007, 20:26
Код

union MyLong
{
    long l;
    char b[sizeof(long)];
};

long l = 1000000;
MyLong lng;
lng.l = l;
lng.b[0] = 5;
l = lng.l;

Можешь написать ф-цию, делающую то же самое.
Ещё можно побитовыми И и ИЛИ.

Автор: 586 3.7.2007, 20:28
или так
Код
long l=0x11223344;
(BYTE&)l=0xFF;

Автор: jonie 3.7.2007, 20:41
...бывают системы BigEndian....

Автор: nikakoi 4.7.2007, 08:59
Спасибоsmile
Выручили)))

Автор: xni 7.7.2007, 10:36
Ну, Big Endian систем не так много... Но чтобы этого избежать лучше, конечно, работать с числами, когда они на регистрах. Например, так
Код

long t=0x00FFFFFF;
x=x&t;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)