#include "pch.h" #include "TextConvertors.h" static std::wistringstream inputWstringstream; static std::wostringstream outputWstringstream(L""); static std::wstring aaaaaa; static LazyBuffer_wchart<256> LazyW256; static LazyBuffer_char<256> LazyC256; uint32_t textconvertors::ConvertWTextHexTypeToU32(const wchar_t* text) { inputWstringstream.clear(); inputWstringstream.str(text); uint32_t ret = 0; if (inputWstringstream >> std::hex >> ret) { return ret; } else { return 0; } } uint32_t textconvertors::ConvertWTextDecTypeToU32(const wchar_t* text) { inputWstringstream.clear(); inputWstringstream.str(text); uint32_t ret = 0; if (inputWstringstream >> std::dec >> ret) { return ret; } else { return 0; } } const wchar_t* textconvertors::ConvertHexTypeU32ToWText(const uint32_t value) { //greatstringstream.clear(); outputWstringstream.str(L"00000000"); outputWstringstream << std::hex << value; aaaaaa = outputWstringstream.str(); return aaaaaa.c_str(); } const wchar_t* textconvertors::ConvertDecTypeU32ToWText(const uint32_t value) { //greatstringstream.clear(); outputWstringstream.str(L"0"); outputWstringstream << std::dec << value; aaaaaa = outputWstringstream.str(); return aaaaaa.c_str(); } uint16_t textconvertors::ConvertWTextDecTypeToU16(const wchar_t* text) { inputWstringstream.clear(); inputWstringstream.str(text); uint16_t PortInput = 0; if (inputWstringstream >> std::dec >> PortInput) { return PortInput; } else { return 0; } } const wchar_t* textconvertors::ConvertDecTypeToU16ToWText(const uint16_t value) { outputWstringstream.str(L"0"); outputWstringstream << std::dec << value; aaaaaa = outputWstringstream.str(); return aaaaaa.c_str(); } void textconvertors::ConvertWTextToIP(const wchar_t* text, uint8_t NewIP[4]) { inputWstringstream.clear(); inputWstringstream.str(text); wchar_t ignore; uint32_t NewIPinput[4]; if (inputWstringstream >> std::dec >> NewIPinput[0] >> ignore >> NewIPinput[1] >> ignore >> NewIPinput[2] >> ignore >> NewIPinput[3]) { NewIPinput[0] <<= 24; NewIPinput[1] <<= 24; NewIPinput[2] <<= 24; NewIPinput[3] <<= 24; NewIP[0] = ((NewIPinput[0] >> 24) & 0xFF); NewIP[1] = ((NewIPinput[1] >> 24) & 0xFF); NewIP[2] = ((NewIPinput[2] >> 24) & 0xFF); NewIP[3] = ((NewIPinput[3] >> 24) & 0xFF); } else { NewIP[0] = 0; NewIP[1] = 0; NewIP[2] = 0; NewIP[3] = 0; } } const wchar_t* textconvertors::ConvertIPToWText(const uint8_t NewIP[4]) { outputWstringstream.str(L""); outputWstringstream << std::dec << static_cast(NewIP[0]) << L'.' << static_cast(NewIP[1]) << L'.' << static_cast(NewIP[2]) << L'.' << static_cast(NewIP[3]); aaaaaa = outputWstringstream.str(); return aaaaaa.c_str(); } const wchar_t* textconvertors::ConvertU8TextToWText_StupidButFast(const uint8_t* data, unsigned short sz) { wchar_t* diesoon = LazyW256.GetNulledMem(sz + 2); for (size_t i = 0; i < sz && data[i]; i++) { diesoon[i] = static_cast(data[i]); } return diesoon; } const wchar_t* textconvertors::ConvertU8TextToWText_StupidButFast_graphNspace(const uint8_t* data, unsigned short sz) { wchar_t* diesoon = LazyW256.GetNulledMem(sz + 2); for (size_t i = 0; i < sz && (::isgraph(data[i]) || data[i] == static_cast(' ')); i++) { diesoon[i] = static_cast(data[i]); } return diesoon; } const wchar_t* textconvertors::ConvertCharTextToWText_StupidButFast(const char* data, unsigned short sz) { wchar_t* diesoon = LazyW256.GetNulledMem(sz + 2); for (size_t i = 0; i < sz && data[i]; i++) { diesoon[i] = static_cast(data[i]); } return diesoon; } static_assert(sizeof(wchar_t) == sizeof(char) * 2, "size of wchar_t is not equal to size of two char"); static_assert(sizeof(wchar_t) == sizeof(uint8_t) * 2, "size of wchar_t is not equal to size of two uint8_t"); static_assert(sizeof(char) == sizeof(uint8_t), "size of char is not equal to size of uint8_t"); const uint8_t* textconvertors::ConvertWTextToU8Text(const wchar_t* src, unsigned short sz) { uint8_t* diesoon = reinterpret_cast(LazyC256.GetNulledMem(sz + 2)); const uint8_t* txtp = reinterpret_cast(src); for (decltype(sz) i = 0; i < sz && txtp[2*i]; i++) { diesoon[i] = txtp[2 * i]; } return diesoon; } const char* textconvertors::ConvertWTextToCharText(const wchar_t* src, unsigned short sz) { char* diesoon = LazyC256.GetNulledMem(sz + 2); const char* txtp = reinterpret_cast(src); for (decltype(sz) i = 0; i < sz && txtp[2 * i]; i++) { diesoon[i] = txtp[2 * i]; } return diesoon; } const std::wstring& textconvertors::ret_stdstring::ConvertDecTypeU32ToWText(const uint32_t v) { outputWstringstream.str(L"0"); outputWstringstream << std::dec << v; aaaaaa = outputWstringstream.str(); return aaaaaa; } const std::wstring& textconvertors::ret_stdstring::ConvertHexTypeU32ToWText(const uint32_t v) { outputWstringstream.str(L"0"); outputWstringstream << std::hex << v; aaaaaa = outputWstringstream.str(); return aaaaaa; } const std::wstring& textconvertors::ret_stdstring::ConvertDecTypeU16ToWText(const uint16_t v) { outputWstringstream.str(L"0"); outputWstringstream << std::dec << v; aaaaaa = outputWstringstream.str(); return aaaaaa; } const std::wstring& textconvertors::ret_stdstring::ConvertIPToWText(const uint8_t NewIP[4]) { outputWstringstream.str(L""); outputWstringstream << std::dec << static_cast(NewIP[0]) << L'.' << static_cast(NewIP[1]) << L'.' << static_cast(NewIP[2]) << L'.' << static_cast(NewIP[3]); aaaaaa = outputWstringstream.str(); return aaaaaa; }