DataUtilsString: string_as_hex and use direct log helpers
This commit is contained in:
parent
bb3fe48c16
commit
397249df61
1 changed files with 25 additions and 14 deletions
|
@ -26,6 +26,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
#include <iomanip>
|
||||||
|
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
|
|
||||||
|
@ -62,24 +63,34 @@ inline size_t mbs_to_wcs(std::wstring &wDest, const std::string &sSrc) {
|
||||||
return std::mbsrtowcs(wDest.data(), &sSrcP, wDest.length(), &mbState);
|
return std::mbsrtowcs(wDest.data(), &sSrcP, wDest.length(), &mbState);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline std::string uint8_as_hex(uint8_t c) {
|
||||||
|
char hex[16] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
|
||||||
|
std::string out = "00";
|
||||||
|
out[0] = hex[((c & 0xf0) >> 4)];
|
||||||
|
out[1] = hex[(c & 0x0f)];
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
|
||||||
template <typename TString>
|
template <typename TString>
|
||||||
inline void dumphex_string(const TString &sIn, const std::string &msgTag){
|
inline std::string string_as_hex(const TString &sIn){
|
||||||
LDBUG("%s[ ", msgTag.c_str());
|
std::stringstream ssout;
|
||||||
|
ssout << "[ ";
|
||||||
for(auto c: sIn) {
|
for(auto c: sIn) {
|
||||||
auto cSize = sizeof(c);
|
auto cSize = sizeof(c);
|
||||||
if (cSize == 1) {
|
if (cSize == 1) {
|
||||||
LDBUG("%02x, ", (uint8_t)c);
|
ssout << uint8_as_hex(c) << ", ";
|
||||||
} else if (cSize == 2) {
|
} else if (cSize == 2) {
|
||||||
LDBUG("%04x, ", (uint16_t)c);
|
ssout << std::setfill('0') << std::setw(cSize*2) << std::hex << static_cast<uint16_t>(c) << ", ";
|
||||||
} else if (cSize == 4) {
|
} else if (cSize == 4) {
|
||||||
LDBUG("%08x, ", (uint32_t)c);
|
ssout << std::setfill('0') << std::setw(cSize*2) << std::hex << static_cast<uint32_t>(c) << ", ";
|
||||||
} else {
|
} else {
|
||||||
std::stringstream ss;
|
std::stringstream ss;
|
||||||
ss << "ERRR:" << __func__ << ":Unsupported char type with size [" << cSize << "]";
|
ss << "ERRR:" << __func__ << ":Unsupported char type with size [" << cSize << "]";
|
||||||
throw std::runtime_error( ss.str().c_str() );
|
throw std::runtime_error( ss.str().c_str() );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
LDBUG_LN(" ]");
|
ssout << " ]";
|
||||||
|
return ssout.str();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Remove chars from begin and end of the passed string, provided the char
|
// Remove chars from begin and end of the passed string, provided the char
|
||||||
|
@ -117,8 +128,8 @@ inline void dumphex_string(const TString &sIn, const std::string &msgTag){
|
||||||
template <typename TString>
|
template <typename TString>
|
||||||
inline TString str_trim_dumb(TString sin, const TString &trimChars=" \t\n") {
|
inline TString str_trim_dumb(TString sin, const TString &trimChars=" \t\n") {
|
||||||
#ifdef DUS_DEBUG_VERBOSE
|
#ifdef DUS_DEBUG_VERBOSE
|
||||||
dumphex_string(sin, "DBUG:StrTrimDumb:Str:");
|
LOG_TEELN("DBUG:StrTrimDumb:Str:%s", string_as_hex(sin).c_str());
|
||||||
dumphex_string(trimChars, "DBUG:StrTrimDumb:TrimChars:");
|
LOG_TEELN("DBUG:StrTrimDumb:TrimChars:%s", string_as_hex(trimChars).c_str());
|
||||||
#endif
|
#endif
|
||||||
sin.erase(sin.find_last_not_of(trimChars)+1);
|
sin.erase(sin.find_last_not_of(trimChars)+1);
|
||||||
sin.erase(0, sin.find_first_not_of(trimChars));
|
sin.erase(0, sin.find_first_not_of(trimChars));
|
||||||
|
@ -196,24 +207,24 @@ inline TString str_tolower(const TString &sin) {
|
||||||
sout.resize(sin.size());
|
sout.resize(sin.size());
|
||||||
std::transform(sin.begin(), sin.end(), sout.begin(), [](auto c)->auto {return std::tolower(c);});
|
std::transform(sin.begin(), sin.end(), sout.begin(), [](auto c)->auto {return std::tolower(c);});
|
||||||
#ifdef DUS_DEBUG_VERBOSE
|
#ifdef DUS_DEBUG_VERBOSE
|
||||||
dumphex_string(sin, "DBUG:StrToLower:in:");
|
LOG_TEELN("DBUG:StrToLower:in:%s", string_as_hex(sin).c_str());
|
||||||
dumphex_string(sout, "DBUG:StrToLower:out:");
|
LOG_TEELN("DBUG:StrToLower:out:%s", string_as_hex(sout).c_str());
|
||||||
#endif
|
#endif
|
||||||
return sout;
|
return sout;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void str_compare_dump(const std::string &s1, const std::string &s2) {
|
inline void str_compare_dump(const std::string &s1, const std::string &s2) {
|
||||||
LDBUG_LN("DBUG:%s:%s:Len:%zu", __func__, s1.c_str(), s1.length());
|
LOG_TEELN("DBUG:%s:%s:Len:%zu", __func__, s1.c_str(), s1.length());
|
||||||
LDBUG_LN("DBUG:%s:%s:Len:%zu", __func__, s2.c_str(), s2.length());
|
LOG_TEELN("DBUG:%s:%s:Len:%zu", __func__, s2.c_str(), s2.length());
|
||||||
int minLen = s1.length() < s2.length() ? s1.length() : s2.length();
|
int minLen = s1.length() < s2.length() ? s1.length() : s2.length();
|
||||||
for(int i=0; i<minLen; i++) {
|
for(int i=0; i<minLen; i++) {
|
||||||
LDBUG_LN("DBUG:%s:%d:%c:%c", __func__, i, s1[i], s2[i]);
|
LOG_TEELN("DBUG:%s:%d:%c:%c", __func__, i, s1[i], s2[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
template<typename TypeWithStrSupp>
|
template<typename TypeWithStrSupp>
|
||||||
std::string str(TypeWithStrSupp value) {
|
std::string as_str(TypeWithStrSupp value) {
|
||||||
std::stringstream ss;
|
std::stringstream ss;
|
||||||
ss << value;
|
ss << value;
|
||||||
return ss.str();
|
return ss.str();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue