#pragma once // i want to use bitshifting but i red in stackoverflow that casting doesnt generate overhead // now ive hit a wall // casting vs bitshifting #include #include namespace std { class ByteConverter { public: template inline static uint8_t *ToBytes(T value) { uint8_t *data = new uint8_t[sizeof(T)](); memcpy(data, &value, sizeof(T)); return data; } template inline static T FromBytes(uint8_t *data) { if (!data) throw std::invalid_argument("cant have null parameter -> ByteConverter::FromBytes"); T value; memcpy(&value, data, sizeof(T)); return value; } }; }