Я нашел этот пост:Использования reinterpret_cast для преобразования двоичных данных со смещением в массиве символов
Why is memcpy slower than a reinterpret_cast when parsing binary data?
, где кто-то использует reinterpret_cast для преобразования двоичных данных в виде целого числа. Однако (я полагаю) число, которое они преобразуют, находится в 0-м элементе в массиве char *.
Как я могу использовать вышеприведенное для ситуаций, когда двоичное число, которое я хочу преобразовать, является смещением N байтов от начала массива символов?
Я хочу преобразовать двоичное число как можно меньше циклов процессора, следовательно, мой интерес к reinterpret_cast
и вышеприведенный вопрос SO.
'* reinterpret_cast (данные + byteOffset),' 'где byteOffset' может быть, например,' positionInArray * sizeof (const int) '. Это работает, когда вы хотите получить доступ к элементам в памяти, я не вижу причин, по которым их реинтерпретация меняет вещи :) –
Следует отметить, что переинтерпретирование байтов с помощью 'reinterpret_cast' для изменения типов указателей не поддерживается C++ стандартный (и эквивалент в C, типы указателей каста, обычно не поддерживается C). Это может привести как к нарушениям выравнивания, так и к нарушениям псевдонимов. Это можно сделать, если это поддерживает конкретная реализация C/C++. Однако вы не должны полагаться на него в C/C++ вообще; он подходит только для конкретных целевых реализаций. Чтобы соответствовать стандарту, байты должны быть скопированы в подходящий объект, как в случае с 'memcpy' (или, в C, можно использовать объединение). –