Адресация short
на границе байта может (или не может) вызывать проблемы с выравниванием, в зависимости от платформы.
Кроме того, умножение очень неэффективно, почему бы вместо этого не использовать сдвиг?(некоторые компиляторы могут оптимизировать x * 0x100
, но если они этого не делают - это огромный удар по производительности, когда все, что вам нужно, это просто x << 8
...)
Кроме того, как отмечалось, reinterpret_cast
может неработать так, как вы ожидаете.
Я бы посоветовал, поскольку вы все равно выполняете присваивания, копировать значения из массива char
в отдельный массив short
.Это стоит немного памяти, но избавит вас от неприятностей с неожиданными сбоями и чем-то еще.