История изменений
Исправление
prischeyadro,
(текущая версия)
:
Да, спасибо, должно быть
x = *(int *)array;
Помню,однажды пришлось так делать потому что сдвиги не помогали — две половинки читались из восьмибитных регистров акселерометра, и представляли они собой куски знакового инта в форме дополнения до нуля. Если просто сдвигать и присваивать их знаковому инту, то -128..127 превращалось в 0..255. А если записать их в массив и кастануть, то работало прекрасно. Да, естественно, это было предназначено конкретно для big endian с шестнадцатибитным интом (это был AVR).
Исходная версия
prischeyadro,
:
Да, спасибо, должно быть [code=c]x = *(int *)array;[/code]
Помню,однажды пришлось так делать потому что сдвиги не помогали — две половинки читались из восьмибитных регистров акселерометра, и представляли они собой куски знакового инта в форме дополнения до нуля. Если просто сдвигать и присваивать их знаковому инту, то -128..127 превращалось в 0..255. А если записать их в массив и кастануть, то работало прекрасно. Да, естественно, это было предназначено конкретно для big endian с шестнадцатибитным интом (это был AVR).