Arduino将浮点转换为十六进制IEEE754单精度32位
我想转换浮点值至IEEE754单精度32位十六进制值在Arduino的以下站点。 如何创建这样的函数?Arduino将浮点转换为十六进制IEEE754单精度32位,arduino,32-bit,ieee-754,single-precision,Arduino,32 Bit,Ieee 754,Single Precision,我想转换浮点值至IEEE754单精度32位十六进制值在Arduino的以下站点。 如何创建这样的函数? 如果格式不同就可以了。f已经以二进制格式存储reinterpret_cast通常是一个代码气味问题,但它的有效用途是查看变量的字节表示形式 void FloatToHex(float f, byte* hex){ byte* f_byte = reinterpret_cast<byte*>(&f); memcpy(hex, f_byte, 4); }
如果格式不同就可以了。
f
已经以二进制格式存储reinterpret_cast
通常是一个代码气味问题,但它的有效用途是查看变量的字节表示形式
void FloatToHex(float f, byte* hex){
byte* f_byte = reinterpret_cast<byte*>(&f);
memcpy(hex, f_byte, 4);
}
void setup() {
float f = 3.10;
byte hex[4] = {0};
FloatToHex(f, hex);
//... do stuff with hex now...
}
void loop() {
}
void FloatToHex(浮点f,字节*hex){
字节*f_字节=重新解释强制转换(&f);
memcpy(十六进制,f_字节,4);
}
无效设置(){
浮点数f=3.10;
字节十六进制[4]={0};
FloatToHex(f,hex);
//…现在就用hex做些事情。。。
}
void循环(){
}
它工作得很好!非常感谢然而,对于使用此代码的人,有一个警告。可能存在十六进制[4]数组中的数据被反转的情况。(不是大端)在这种情况下,您可以在循环中以相反的顺序保存和使用数据。在此警告中,大端或小端不是随机的,无论您为哪个体系结构(处理器)构建,都将记录其端性。如果您遇到这个问题,并且不知道您的系统是大的还是小的endian,请在文档中查找它!
void FloatToHex(float f, byte* hex){
byte* f_byte = reinterpret_cast<byte*>(&f);
memcpy(hex, f_byte, 4);
}
void setup() {
float f = 3.10;
byte hex[4] = {0};
FloatToHex(f, hex);
//... do stuff with hex now...
}
void loop() {
}