直接贴代码
//将float数据转为16进制字符串数据
string CSignalMonitorZoliXDlg::floatToHexadecimal(float value) {
// 创建一个与float值相同的uint32_t表示
uint32_t bits;
memcpy(&bits, &value, sizeof(value));
// 构建十六进制字符串
stringstream hexStream;
hexStream << std::hex << std::setfill('0') << std::uppercase;
// 由于float是32位的,我们需要将其分为4个字节
for (int i = 0; i < 4; ++i) {
// 计算当前字节的偏移量
int offset = (3 - i) * 8; // 根据系统字节序,调整这个偏移量
// 提取相应的字节,并将其转换为十六进制表示
uint8_t byte = (bits >> offset) & 0xFF;
// 将字节转换为十六进制字符串并添加到流中
hexStream << std::hex << std::setw(2) << static_cast<int>(byte);
}
// 返回十六进制字符串
return hexStream.str();
}