#include <iostream>
#include <vector>
std::string float_TO_string(float fl)
{
std::vector<unsigned char> a(sizeof(float));
memcpy(&a[0], &fl, sizeof(float));
std::string result;
for (unsigned char byte : a) {
char hex[3];
snprintf(hex, sizeof(hex), "%02X", byte);
result += hex;
}
return result;
}
std::string float_TO_string(double dl)
{
std::vector<unsigned char> a(sizeof(double));
memcpy(&a[0], &dl, sizeof(double));
std::string result;
for (unsigned char byte : a) {
char hex[3];
snprintf(hex, sizeof(hex), "%02X", byte);
result += hex;
}
return result;
}
float string_TO_float(std::string f1)
{
std::vector<unsigned char> a(4);
for (int i = 0; i < 4; ++i) {
a = std::stoul(f1.substr(i * 2, 2), nullptr, 16);
}
float fl;
memcpy(&fl, &a[0], sizeof(float));
return fl;
}
double string_TO_double(std::string d1)
{
std::vector<unsigned char> a(8);
for (int i = 0; i < 8; ++i) {
a = std::stoul(d1.substr(i * 2, 2), nullptr, 16);
}
double dl;
memcpy(&dl, &a[0], sizeof(double));
return dl;
}
int main()
{
// 測試轉換函數
float f = 3.14f;
double d = 6.28;
std::string floatHex = float_TO_string(f);
std::string doubleHex = float_TO_string(d);
std::cout << "Float to Hex String: " << floatHex << std::endl;
std::cout << "Double to Hex String: " << doubleHex << std::endl;
float convertedFloat = string_TO_float(floatHex);
double convertedDouble = string_TO_double(doubleHex);
std::cout << "Hex String to Float: " << convertedFloat << std::endl;
std::cout << "Hex String to Double: " << convertedDouble << std::endl;
return 0;
}