按照大端模式怎么将无符号float b中的每8位转为一个char,再将4个char转为1一个float代码,不要用for循环
时间: 2023-06-19 16:03:59 浏览: 76
可以使用指针和位运算来实现无符号float转换为char数组和char数组转换为float的操作。
将无符号float b中的每8位转为一个char:
```c++
unsigned char charArr[4];
unsigned char* pChar = (unsigned char*)&b;
charArr[0] = *(pChar + 3); // 取最高位8位
charArr[1] = *(pChar + 2); // 取次高位8位
charArr[2] = *(pChar + 1); // 取次低位8位
charArr[3] = *(pChar); // 取最低位8位
```
将4个char转为1个float:
```c++
unsigned char charArr[4];
float* pFloat = (float*)&charArr;
*pFloat = *((float*)charArr);
```
完整代码:
```c++
#include <iostream>
using namespace std;
int main() {
unsigned float b = 3.14159f;
unsigned char charArr[4];
// 将无符号float b中的每8位转为一个char
unsigned char* pChar = (unsigned char*)&b;
charArr[0] = *(pChar + 3); // 取最高位8位
charArr[1] = *(pChar + 2); // 取次高位8位
charArr[2] = *(pChar + 1); // 取次低位8位
charArr[3] = *(pChar); // 取最低位8位
// 将4个char转为1个float
float* pFloat = (float*)&charArr;
*pFloat = *((float*)charArr);
cout << *pFloat << endl;
return 0;
}
```
阅读全文