Что делает эта функция (SwapEnd)?

127
13 декабря 2020, 12:40

Столкнулся со следующей функцией, автор использует её при записи в данных в .vtk файл. Подскажите, что эта функция делает?

template <typename T>
void SwapEnd(T& var)
{
    char* varArray = reinterpret_cast<char*>(&var);
    for (long i = 0; i < static_cast<long>(sizeof(var) / 2); i++)
        std::swap(varArray[sizeof(var) - 1 - i], varArray[i]);
}
Answer 1

Меняет порядок байт в переменной. Только переменная должна быть POD, что, увы, не проверяется - иначе будут неприятности...

Например,

unsigned long L = 0xDEADBEEF;
cout << hex << L << endl;
SwapEnd(L);
cout << hex << L << endl;

выводит

deadbeef
efbeadde

Просто с обычной C-строкой, кстати, тоже будут проблемы... Даже если ее передать как массив - нулевой символ тоже будет участвовать в обмене.

READ ALSO
Связанные select2 from to

Связанные select2 from to

Есть 2 связанных списка select со значениями от и до, реализованные с помощью select2:

114
функция не передается в $(window).resize()

функция не передается в $(window).resize()

Подскажите что я делаю неправильно и в чем моя ошибка

132
CSS оформление хлебных крошек

CSS оформление хлебных крошек

Как можно сделать такую навигационную панель? ширина может увеличиваться смотря от названия категории

121
Обращение к ячейке таблицы. Селекторы по атрибутам colspan и rowspan

Обращение к ячейке таблицы. Селекторы по атрибутам colspan и rowspan

Все приветИнтересует такой вопрос, он наверное более академический:)Можно ли обратится к группе ячеек з разными атрибутами colspan, без добавление...

121