SatDump 2.0.0-alpha-76a915210
Loading...
Searching...
No Matches
binary.h
1#pragma once
2
3#include <cstddef>
4#include <cstdint>
5#include <vector>
6
7namespace satdump
8{
9 template <typename T>
10 inline bool getBit(T &data, int &bit)
11 {
12 return (data >> bit) & 1;
13 }
14
15 template <typename T>
16 std::vector<uint8_t> unsigned_to_bitvec(T v)
17 {
18 std::vector<uint8_t> c;
19 for (int s = (sizeof(T) * 8) - 1; s >= 0; s--)
20 c.push_back((v >> s) & 1);
21 return c;
22 }
23
24 template <typename T>
25 std::vector<T> oversample_vector(std::vector<T> data, int oversampling)
26 {
27 std::vector<T> r;
28 for (T &v : data)
29 for (int i = 0; i < oversampling; i++)
30 r.push_back(v);
31 return r;
32 }
33
34 template <typename T>
35 T swap_endian(T u)
36 {
37 union {
38 T u;
39 unsigned char u8[sizeof(T)];
40 } source, dest;
41
42 source.u = u;
43
44 for (size_t k = 0; k < sizeof(T); k++)
45 dest.u8[k] = source.u8[sizeof(T) - k - 1];
46
47 return dest.u;
48 }
49
50 inline std::vector<float> double_buffer_to_float(double *ptr, int size)
51 {
52 std::vector<float> ret;
53 for (int i = 0; i < size; i++)
54 ret.push_back(ptr[i]);
55 return ret;
56 }
57
58 uint8_t reverseBits(uint8_t byte);
59
60 uint16_t reverse16Bits(uint16_t v);
61} // namespace satdump