tlx
Loading...
Searching...
No Matches
hexdump.hpp
Go to the documentation of this file.
1/*******************************************************************************
2 * tlx/string/hexdump.hpp
3 *
4 * Part of tlx - http://panthema.net/tlx
5 *
6 * Copyright (C) 2007-2017 Timo Bingmann <tb@panthema.net>
7 *
8 * All rights reserved. Published under the Boost Software License, Version 1.0
9 ******************************************************************************/
10
11#ifndef TLX_STRING_HEXDUMP_HEADER
12#define TLX_STRING_HEXDUMP_HEADER
13
14#include <cstdint>
15#include <string>
16#include <vector>
17
18namespace tlx {
19
20//! \addtogroup tlx_string
21//! \{
22//! \name Hexdump Methods
23//! \{
24
25/******************************************************************************/
26// Uppercase Hexdump Methods
27
28/*!
29 * Dump a (binary) string as a sequence of uppercase hexadecimal pairs.
30 *
31 * \param data binary data to output in hex
32 * \param size length of binary data
33 * \return string of hexadecimal pairs
34 */
35std::string hexdump(const void* const data, size_t size);
36
37/*!
38 * Dump a (binary) string as a sequence of uppercase hexadecimal pairs.
39 *
40 * \param str binary data to output in hex
41 * \return string of hexadecimal pairs
42 */
43std::string hexdump(const std::string& str);
44
45/*!
46 * Dump a (binary) item as a sequence of uppercase hexadecimal pairs.
47 *
48 * \param t binary data to output in hex
49 * \return string of hexadecimal pairs
50 */
51template <typename Type>
52std::string hexdump_type(const Type& t) {
53 return hexdump(&t, sizeof(t));
54}
55
56/*!
57 * Dump a char vector as a sequence of uppercase hexadecimal pairs.
58 *
59 * \param data binary data to output in hex
60 * \return string of hexadecimal pairs
61 */
62std::string hexdump(const std::vector<char>& data);
63
64/*!
65 * Dump a uint8_t vector as a sequence of uppercase hexadecimal pairs.
66 *
67 * \param data binary data to output in hex
68 * \return string of hexadecimal pairs
69 */
70std::string hexdump(const std::vector<std::uint8_t>& data);
71
72/*!
73 * Dump a (binary) string into a C source code snippet. The snippet defines an
74 * array of const std::uint8_t* holding the data of the string.
75 *
76 * \param str string to output as C source array
77 * \param var_name name of the array variable in the outputted code snippet
78 * \return string holding C source snippet
79 */
80std::string hexdump_sourcecode(
81 const std::string& str, const std::string& var_name = "name");
82
83/******************************************************************************/
84// Lowercase Hexdump Methods
85
86/*!
87 * Dump a (binary) string as a sequence of lowercase hexadecimal pairs.
88 *
89 * \param data binary data to output in hex
90 * \param size length of binary data
91 * \return string of hexadecimal pairs
92 */
93std::string hexdump_lc(const void* const data, size_t size);
94
95/*!
96 * Dump a (binary) string as a sequence of lowercase hexadecimal pairs.
97 *
98 * \param str binary data to output in hex
99 * \return string of hexadecimal pairs
100 */
101std::string hexdump_lc(const std::string& str);
102
103/*!
104 * Dump a (binary) item as a sequence of lowercase hexadecimal pairs.
105 *
106 * \param t binary data to output in hex
107 * \return string of hexadecimal pairs
108 */
109template <typename Type>
110std::string hexdump_lc_type(const Type& t) {
111 return hexdump_lc(&t, sizeof(t));
112}
113
114/*!
115 * Dump a char vector as a sequence of lowercase hexadecimal pairs.
116 *
117 * \param data binary data to output in hex
118 * \return string of hexadecimal pairs
119 */
120std::string hexdump_lc(const std::vector<char>& data);
121
122/*!
123 * Dump a uint8_t vector as a sequence of lowercase hexadecimal pairs.
124 *
125 * \param data binary data to output in hex
126 * \return string of hexadecimal pairs
127 */
128std::string hexdump_lc(const std::vector<std::uint8_t>& data);
129
130/******************************************************************************/
131// Parser for Hex Digit Sequence
132
133/*!
134 * Read a string as a sequence of hexadecimal pairs. Converts each pair of
135 * hexadecimal digits into a byte of the output string. Throws
136 * std::runtime_error() if an unknown letter is encountered.
137 *
138 * \param str string to parse as hex digits
139 * \return string of read bytes
140 */
141std::string parse_hexdump(const std::string& str);
142
143//! \}
144//! \}
145
146} // namespace tlx
147
148#endif // !TLX_STRING_HEXDUMP_HEADER
149
150/******************************************************************************/
std::string hexdump_lc(const void *const data, size_t size)
Dump a (binary) string as a sequence of lowercase hexadecimal pairs.
Definition hexdump.cpp:96
std::string hexdump_lc_type(const Type &t)
Dump a (binary) item as a sequence of lowercase hexadecimal pairs.
Definition hexdump.hpp:110
std::string parse_hexdump(const std::string &str)
Read a string as a sequence of hexadecimal pairs.
Definition hexdump.cpp:132
std::string hexdump_sourcecode(const std::string &str, const std::string &var_name)
Dump a (binary) string into a C source code snippet.
Definition hexdump.cpp:55
std::string hexdump(const void *const data, size_t size)
Dump a (binary) string as a sequence of uppercase hexadecimal pairs.
Definition hexdump.cpp:22
std::string hexdump_type(const Type &t)
Dump a (binary) item as a sequence of uppercase hexadecimal pairs.
Definition hexdump.hpp:52