uLaunch/Common/Source/util/util_Convert.cpp
2019-10-26 15:42:03 +02:00

66 lines
No EOL
2.7 KiB
C++

#include <util/util_Convert.hpp>
namespace util
{
std::string Format128NintendoStyle(u128 value)
{
u8 *bytesval = (u8*)&value;
std::stringstream strm;
strm << std::hex << std::setw(2) << std::setfill('0') << std::nouppercase << (int)bytesval[3];
strm << std::hex << std::setw(2) << std::setfill('0') << std::nouppercase << (int)bytesval[2];
strm << std::hex << std::setw(2) << std::setfill('0') << std::nouppercase << (int)bytesval[1];
strm << std::hex << std::setw(2) << std::setfill('0') << std::nouppercase << (int)bytesval[0];
strm << "-";
strm << std::hex << std::setw(2) << std::setfill('0') << std::nouppercase << (int)bytesval[5];
strm << std::hex << std::setw(2) << std::setfill('0') << std::nouppercase << (int)bytesval[4];
strm << "-";
strm << std::hex << std::setw(2) << std::setfill('0') << std::nouppercase << (int)bytesval[7];
strm << std::hex << std::setw(2) << std::setfill('0') << std::nouppercase << (int)bytesval[6];
strm << "-";
strm << std::hex << std::setw(2) << std::setfill('0') << std::nouppercase << (int)bytesval[9];
strm << std::hex << std::setw(2) << std::setfill('0') << std::nouppercase << (int)bytesval[8];
strm << "-";
strm << std::hex << std::setw(2) << std::setfill('0') << std::nouppercase << (int)bytesval[15];
strm << std::hex << std::setw(2) << std::setfill('0') << std::nouppercase << (int)bytesval[14];
strm << std::hex << std::setw(2) << std::setfill('0') << std::nouppercase << (int)bytesval[13];
strm << std::hex << std::setw(2) << std::setfill('0') << std::nouppercase << (int)bytesval[12];
strm << std::hex << std::setw(2) << std::setfill('0') << std::nouppercase << (int)bytesval[11];
strm << std::hex << std::setw(2) << std::setfill('0') << std::nouppercase << (int)bytesval[10];
return strm.str();
}
u64 Get64FromString(std::string val)
{
return strtoull(val.c_str(), NULL, 16);
}
std::string FormatApplicationId(u64 app_id)
{
std::stringstream strm;
strm << std::uppercase << std::setfill('0') << std::setw(16) << std::hex << app_id;
return strm.str();
}
std::string FormatResultDisplay(Result rc)
{
char res[0x20] = {0};
sprintf(res, "%04d-%04d", R_MODULE(rc) + 2000, R_DESCRIPTION(rc));
return std::string(res);
}
std::string FormatResultHex(Result rc)
{
char res[0x20] = {0};
sprintf(res, "0x%X", rc);
return std::string(res);
}
std::string FormatResult(Result rc)
{
auto desc = RES_DESCRIPTION(rc);
if(desc.empty()) return desc;
return "(" + FormatResultDisplay(rc) + ") " + desc;
}
}