Bitcoin Core
22.99.0
P2P Digital Currency
|
#include <util/strencodings.h>
#include <util/string.h>
#include <tinyformat.h>
#include <algorithm>
#include <cstdlib>
#include <cstring>
#include <limits>
#include <optional>
Go to the source code of this file.
Functions | |
std::string | SanitizeString (const std::string &str, int rule) |
Remove unsafe chars. More... | |
signed char | HexDigit (char c) |
bool | IsHex (const std::string &str) |
bool | IsHexNumber (const std::string &str) |
Return true if the string is a hex number, optionally prefixed with "0x". More... | |
std::vector< unsigned char > | ParseHex (const char *psz) |
std::vector< unsigned char > | ParseHex (const std::string &str) |
void | SplitHostPort (std::string in, uint16_t &portOut, std::string &hostOut) |
std::string | EncodeBase64 (Span< const unsigned char > input) |
std::vector< unsigned char > | DecodeBase64 (const char *p, bool *pf_invalid) |
std::string | DecodeBase64 (const std::string &str, bool *pf_invalid) |
std::string | EncodeBase32 (Span< const unsigned char > input, bool pad) |
Base32 encode. More... | |
std::string | EncodeBase32 (const std::string &str, bool pad) |
Base32 encode. More... | |
std::vector< unsigned char > | DecodeBase32 (const char *p, bool *pf_invalid) |
std::string | DecodeBase32 (const std::string &str, bool *pf_invalid) |
bool | ParseInt32 (const std::string &str, int32_t *out) |
Convert string to signed 32-bit integer with strict parse error feedback. More... | |
bool | ParseInt64 (const std::string &str, int64_t *out) |
Convert string to signed 64-bit integer with strict parse error feedback. More... | |
bool | ParseUInt8 (const std::string &str, uint8_t *out) |
Convert decimal string to unsigned 8-bit integer with strict parse error feedback. More... | |
bool | ParseUInt16 (const std::string &str, uint16_t *out) |
Convert decimal string to unsigned 16-bit integer with strict parse error feedback. More... | |
bool | ParseUInt32 (const std::string &str, uint32_t *out) |
Convert decimal string to unsigned 32-bit integer with strict parse error feedback. More... | |
bool | ParseUInt64 (const std::string &str, uint64_t *out) |
Convert decimal string to unsigned 64-bit integer with strict parse error feedback. More... | |
std::string | FormatParagraph (const std::string &in, size_t width, size_t indent) |
Format a paragraph of text to a fixed width, adding spaces for indentation to any added line. More... | |
static bool | ProcessMantissaDigit (char ch, int64_t &mantissa, int &mantissa_tzeros) |
Helper function for ParseFixedPoint. More... | |
bool | ParseFixedPoint (const std::string &val, int decimals, int64_t *amount_out) |
Parse number as fixed point according to JSON number syntax. More... | |
std::string | ToLower (const std::string &str) |
Returns the lowercase equivalent of the given string. More... | |
std::string | ToUpper (const std::string &str) |
Returns the uppercase equivalent of the given string. More... | |
std::string | Capitalize (std::string str) |
Capitalizes the first character of the given string. More... | |
std::string | HexStr (const Span< const uint8_t > s) |
Convert a span of bytes to a lower-case hexadecimal string. More... | |
std::optional< uint64_t > | ParseByteUnits (const std::string &str, ByteUnit default_multiplier) |
Parse a string with suffix unit [k|K|m|M|g|G|t|T]. More... | |
Variables | |
static const std::string | CHARS_ALPHA_NUM = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" |
static const std::string | SAFE_CHARS [] |
const signed char | p_util_hexdigit [256] |
static const int64_t | UPPER_BOUND = 1000000000000000000LL - 1LL |
Upper bound for mantissa. More... | |
std::string Capitalize | ( | std::string | str | ) |
Capitalizes the first character of the given string.
This function is locale independent. It only converts lowercase characters in the standard 7-bit ASCII range. This is a feature, not a limitation.
[in] | str | the string to capitalize. |
Definition at line 504 of file strencodings.cpp.
std::vector<unsigned char> DecodeBase32 | ( | const char * | p, |
bool * | pf_invalid | ||
) |
std::string DecodeBase32 | ( | const std::string & | str, |
bool * | pf_invalid | ||
) |
std::vector<unsigned char> DecodeBase64 | ( | const char * | p, |
bool * | pf_invalid | ||
) |
std::string DecodeBase64 | ( | const std::string & | str, |
bool * | pf_invalid | ||
) |
std::string EncodeBase32 | ( | const std::string & | str, |
bool | pad = true |
||
) |
Base32 encode.
If pad
is true, then the output will be padded with '=' so that its length is a multiple of 8.
Definition at line 215 of file strencodings.cpp.
std::string EncodeBase32 | ( | Span< const unsigned char > | input, |
bool | pad = true |
||
) |
Base32 encode.
If pad
is true, then the output will be padded with '=' so that its length is a multiple of 8.
Definition at line 200 of file strencodings.cpp.
std::string EncodeBase64 | ( | Span< const unsigned char > | input | ) |
Definition at line 131 of file strencodings.cpp.
std::string FormatParagraph | ( | const std::string & | in, |
size_t | width, | ||
size_t | indent | ||
) |
Format a paragraph of text to a fixed width, adding spaces for indentation to any added line.
Definition at line 329 of file strencodings.cpp.
signed char HexDigit | ( | char | c | ) |
std::string HexStr | ( | const Span< const uint8_t > | s | ) |
Convert a span of bytes to a lower-case hexadecimal string.
Definition at line 511 of file strencodings.cpp.
bool IsHex | ( | const std::string & | str | ) |
Definition at line 61 of file strencodings.cpp.
bool IsHexNumber | ( | const std::string & | str | ) |
Return true if the string is a hex number, optionally prefixed with "0x".
Definition at line 71 of file strencodings.cpp.
std::optional<uint64_t> ParseByteUnits | ( | const std::string & | str, |
ByteUnit | default_multiplier | ||
) |
Parse a string with suffix unit [k|K|m|M|g|G|t|T].
Must be a whole integer, fractions not allowed (0.5t), no whitespace or +- Lowercase units are 1000 base. Uppercase units are 1024 base. Examples: 2m,27M,19g,41T
[in] | str | the string to convert into bytes |
[in] | default_multiplier | if no unit is found in str use this unit |
Definition at line 525 of file strencodings.cpp.
bool ParseFixedPoint | ( | const std::string & | val, |
int | decimals, | ||
int64_t * | amount_out | ||
) |
Parse number as fixed point according to JSON number syntax.
See https://json.org/number.gif
Definition at line 398 of file strencodings.cpp.
std::vector<unsigned char> ParseHex | ( | const char * | psz | ) |
Definition at line 84 of file strencodings.cpp.
std::vector<unsigned char> ParseHex | ( | const std::string & | str | ) |
bool ParseInt32 | ( | const std::string & | str, |
int32_t * | out | ||
) |
Convert string to signed 32-bit integer with strict parse error feedback.
Definition at line 299 of file strencodings.cpp.
bool ParseInt64 | ( | const std::string & | str, |
int64_t * | out | ||
) |
Convert string to signed 64-bit integer with strict parse error feedback.
Definition at line 304 of file strencodings.cpp.
bool ParseUInt16 | ( | const std::string & | str, |
uint16_t * | out | ||
) |
Convert decimal string to unsigned 16-bit integer with strict parse error feedback.
Definition at line 314 of file strencodings.cpp.
bool ParseUInt32 | ( | const std::string & | str, |
uint32_t * | out | ||
) |
Convert decimal string to unsigned 32-bit integer with strict parse error feedback.
Definition at line 319 of file strencodings.cpp.
bool ParseUInt64 | ( | const std::string & | str, |
uint64_t * | out | ||
) |
Convert decimal string to unsigned 64-bit integer with strict parse error feedback.
Definition at line 324 of file strencodings.cpp.
bool ParseUInt8 | ( | const std::string & | str, |
uint8_t * | out | ||
) |
Convert decimal string to unsigned 8-bit integer with strict parse error feedback.
Definition at line 309 of file strencodings.cpp.
|
inlinestatic |
Helper function for ParseFixedPoint.
Definition at line 382 of file strencodings.cpp.
std::string SanitizeString | ( | const std::string & | str, |
int | rule = SAFE_CHARS_DEFAULT |
||
) |
Remove unsafe chars.
Safe chars chosen to allow simple messages/URLs/email addresses, but avoid anything even possibly remotely dangerous like & or >
[in] | str | The string to sanitize |
[in] | rule | The set of safe chars to choose (default: least restrictive) |
Definition at line 27 of file strencodings.cpp.
void SplitHostPort | ( | std::string | in, |
uint16_t & | portOut, | ||
std::string & | hostOut | ||
) |
Definition at line 110 of file strencodings.cpp.
std::string ToLower | ( | const std::string & | str | ) |
Returns the lowercase equivalent of the given string.
This function is locale independent. It only converts uppercase characters in the standard 7-bit ASCII range. This is a feature, not a limitation.
[in] | str | the string to convert to lowercase. |
Definition at line 490 of file strencodings.cpp.
std::string ToUpper | ( | const std::string & | str | ) |
Returns the uppercase equivalent of the given string.
This function is locale independent. It only converts lowercase characters in the standard 7-bit ASCII range. This is a feature, not a limitation.
[in] | str | the string to convert to uppercase. |
Definition at line 497 of file strencodings.cpp.
|
static |
Definition at line 17 of file strencodings.cpp.
const signed char p_util_hexdigit[256] |
Definition at line 38 of file strencodings.cpp.
|
static |
Definition at line 19 of file strencodings.cpp.
|
static |
Upper bound for mantissa.
10^18-1 is the largest arbitrary decimal that will fit in a signed 64-bit integer. Larger integers cannot consist of arbitrary combinations of 0-9:
999999999999999999 1^18-1 9223372036854775807 (1<<63)-1 (max int64_t) 9999999999999999999 1^19-1 (would overflow)
Definition at line 379 of file strencodings.cpp.