将float转换为byte []以通过命名管道(C ++)发送

时间:2012-03-30 14:08:45

标签: c# c++ byte ipc

我有一个C ++进程,它有一个线程需要通过命名管道将存储在数组中的浮点数发送到另一个进程。我已经构建了准备发送的字节数组,但是我不太确定如何以可以发送的形式获取浮点数(即如何将它们转换为字节)。

另一个进程是同一台机器上的C#进程,我假设我可以使用BitConverter获取传入字节数组中的相关字节并将其更改为float但我不太熟悉C ++并且不知道如何将float更改为byte []。

平台是Windows,我使用的是Visual Studio 2010 C ++。

3 个答案:

答案 0 :(得分:2)

足够简单:

const void *data = &myFloat;
size_t size = sizeof myFloat;

然后使用memcpy将数据移动到您想要的位置。

答案 1 :(得分:2)

快速而肮脏的方式是使用联合:

union getBytes
{
    float floatNumber;
    byte bytes[sizeof(float)];
} number;

BIG警告是要注意两台机器上的字节顺序。在多次查找字节序has been solved之前,请尝试在其上搜索一些资源。只要确保你的字节在两边都匹配。

编辑:更改了联合中的字节以匹配机器上浮点的大小。

答案 2 :(得分:0)

我推荐使用这个 C++ 头文件库。

BitConverter

它可以将字节转换为浮点数,并获取它们的字节。更重要的是,用户可以指定字节序,这对于将字节发送到另一台机器并在那里获取值非常重要。