Oxygen Engine
Modern C++ 3D Engine using OpenGL
Loading...
Searching...
No Matches
byte_array.h
1#ifndef OE_UTIL_BYTE_ARRAY_H
2#define OE_UTIL_BYTE_ARRAY_H
3
4#include <cstdint>
5#include <vector>
6#include <algorithm>
7#include <string>
8#include <cstddef>
9#include <span>
10
11namespace oe
12{
13 typedef std::vector<std::byte> ByteArray;
14 typedef std::span<const std::byte> ByteSpan;
15};
16
17namespace oe::util
18{
24 inline ByteArray convertUint8VectorToByteArray(const std::vector<uint8_t>& input)
25 {
26 ByteArray result(input.size());
27
28 std::ranges::transform(input, result.begin(),
29 [] (const uint8_t& c) { return std::byte(c); }
30 );
31
32 return result;
33 }
34
40 inline std::vector<uint8_t> convertByteArrayToUint8Vector(ByteSpan input)
41 {
42 std::vector<uint8_t> result(input.size());
43
44 std::ranges::transform(input, result.begin(),
45 [] (const std::byte& c) { return std::to_integer<char>(c); }
46 );
47
48 return result;
49 }
50
51 template <typename T>
52 inline T convertFromByteArray(ByteSpan input)
53 {
54 return *reinterpret_cast<const T*>(input.data());
55 }
56
57 template <typename T>
58 inline ByteArray convertToByteArray(const T& input)
59 {
60 ByteArray result;
61
62 constexpr const size_t size = sizeof(T);
63
64 result.reserve(size);
65
66 auto ptr = reinterpret_cast<const uint8_t*>(&input);
67 for (std::size_t i=0; i<size; ++i)
68 {
69 result.push_back(std::byte(ptr[i]));
70 }
71
72 return result;
73 }
74
78 inline std::string bytesToStr(ByteSpan input)
79 {
80 if (input.size() == 0)
81 {
82 return "";
83 }
84
85 return {reinterpret_cast<const char*>(input.data()), input.size()};
86 }
87
91 inline ByteArray strToBytes(std::string_view input)
92 {
93 ByteArray result(input.size());
94
95 std::ranges::transform(input, result.begin(),
96 [] (char c) { return std::byte(c); }
97 );
98
99 return result;
100 }
101
105 std::string bytesToHex(ByteSpan input, bool uppercase = false);
106
110 ByteArray hexToBytes(const std::string& input);
111};
112
113#endif
Various utilities.
Definition node.h:15
std::string bytesToStr(ByteSpan input)
Definition byte_array.h:78
std::string bytesToHex(ByteSpan input, bool uppercase=false)
ByteArray convertUint8VectorToByteArray(const std::vector< uint8_t > &input)
Convert a vector of uint8_t to ByteArray.
Definition byte_array.h:24
ByteArray hexToBytes(const std::string &input)
std::vector< uint8_t > convertByteArrayToUint8Vector(ByteSpan input)
Convert a Byte Span to vector of uint8_t.
Definition byte_array.h:40
ByteArray strToBytes(std::string_view input)
Definition byte_array.h:91
Oxygen Engine common namespace.
Definition debug.h:17