C :重新组装4个字节的浮子
C++ : reassembly of a float from 4 bytes
我正在收到8组4个炭,代表8个浮标,但我正在与C 挣扎以重新组装它们。
编辑以表达这个想法(此代码显然是错误的):
// Re-assembly of 32 bytes into 8 float
float concat_value[8];
for (int i = 0; i < 8; i ++) {
concat_value[i] = buffer[4 * i + 3];
concat_value[i] = concat_value[i] << 8;
concat_value[i] = (concat_value[i] & buffer[4 * i + 2]);
concat_value[i] = concat_value[i] << 8;
concat_value[i] = (concat_value[i] & buffer[4 * i + 1]);
concat_value[i] = concat_value[i] << 8;
concat_value[i] = (concat_value[i] & buffer[4 * i + 0]);
std::cout << " concat_value: " << concat_value[i] << std::endl;
}
对不起,我知道它仍然无法正常工作,它只是代表这个想法。
如果您可以点燃我。
非常感谢,
Jean-François
在您的文本中,您说您的二进制二进制代表性8浮子。但是您的代码实际上还远远不够。
根据您的代码,似乎缓冲区是浮子的一个小末日表示,所以我想您在x86上编译。因此,如果这些假设是正确的,则该代码将有效:
float concat_value[8];
for (int i = 0; i < 8; i ++) {
concat_value[i] = *reinterpret_cast<float*>(buffer+i*sizeof(float));
std::cout << " concat_value: " << concat_value[i] << std::endl;
}
如果您的目的是仅保留在concat_value中,则浮标的整体部分:
int concat_value[8];
for (int i = 0; i < 8; i ++) {
float v = *reinterpret_cast<float*>(buffer+i*sizeof(float));
std::cout << " concat_value: " << v << std::endl;
concat_value[i]=v;
}
相关文章:
- 从文件中读取多个字节,并将它们存储在C++中进行比较
- 如何使用 OpenCV 解码在两个 UWP 应用之间发送的图像字节?
- 找到一种有效的方法,在 2 个巨大的缓冲区上执行 MAX,每字节字节
- 为什么 bool 和 _Bool 如果它们在内存中占用 1 个字节,它们只能存储 0 或 1
- 在 Linux 中,uint32_t从 4 个字节更改为 6 个字节
- 运行时错误:引用绑定到类型"int"的未对齐地址0xbebebebebebebec6,这需要 4 个字节对齐 (stl_vector.h)
- 向指针地址添加 20 个字节偏移量
- 将(N 个字节)无符号字符指针转换为浮点数和双 C++
- C++/地址空间:每个地址 2 个字节?
- 为什么这个结构需要 24 个字节
- 为什么带有 vptr 的对象长 12 个字节?
- 使用 valgrind 检查我的链表暗示中的内存泄漏,让我"肯定丢失:1 个块中有 40 个字节"
- 复制后删除原始数组指针将前 3 个字节设置为 0
- 在编译时而不是运行时创建一个由两个字节组成的值
- 为什么在我的实现中,所有数组都对齐到 16 个字节?
- 使用 Python 导出 4 个字节浮点数
- C++向指针地址添加 4 个字节
- 是否强制转换void**并将第一个字节设置为nullptr
- AES-128 CFB-8解密的前16个字节已损坏
- 检查 IP 第一个八位字节是否不以 127 / 224 或 255 开头