Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arduino将浮点转换为十六进制IEEE754单精度32位_Arduino_32 Bit_Ieee 754_Single Precision - Fatal编程技术网

Arduino将浮点转换为十六进制IEEE754单精度32位

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); }

我想转换浮点值​​至IEEE754单精度32位十六进制值​​在Arduino的以下站点。

如何创建这样的函数?
如果格式不同就可以了。

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() {
  
}