Endian не проблема.Если вы используете char[4]
, наименьший адрес 0 будет первым, наибольший 3 будет последним, поэтому вы получите в памяти
char[0] char[1] char[2] char[3]
, что бы вы ни делали.
Если вы выполните int x = *(reinterpret_cast<int*>(abc))
, тогда вы получите разные результаты, в зависимости от порядка байтов, потому что (4byte-) int
иногда читается как 0123
, иногда 3210
- и я думаю, что даже 2301
имеетбыл в 60-х годах.
Вы не можете поместить 0xC0204420
(большее число, чем 127
) в [32]
тыс. позицию abc
.Если вы хотите реализовать что-то «быстрое» (и опасное), вам понадобится зависящий от платформы reinterpret_cast
.Взгляните на hton
и ntoh
.