gpt4 book ai didi

c++ - 将一个 float 分成单个字节

转载 作者:太空宇宙 更新时间:2023-11-04 15:42:52 27 4
gpt4 key购买 nike

我正在使用 RakNet 进行联网,我需要传输浮点值。问题是,我只能发送单个字节。由于 float 由 4 个字节组成,我认为一定有可能将 float 分解为这四个字节并发送它们。在那之后,我想再次将它们组合成一个花车。

我该怎么做?

最佳答案

  1. memcpy 原始float 值到适当大小的unsigned char数组

    float f = ...;

    unsigned char c[sizeof f];
    memcpy(c, &f, sizeof f);
    // use `c[i]` to access the bytes
  2. 使用 reinterpret_cast 将原始指针重新解释为 unsigned char 的数组

    float f = ...;

    unsigned char *c = reinterpret_cast<unsigned char *>(&f);
    // use `c[i]` to access the bytes
  3. 使用 union 执行相同的重新解释

    union FC {
    float f;
    unsigned char c[sizeof FC::f];
    };

    float f = ...;

    FC u = { f };
    // use `u.c[i]` to access the bytes

请记住一些额外的细节:最后一种方法(使用 union)现在在 C 中是合法的,但在 C++ 中仍然是正式的非法 - 您不能读取“非事件”成员C++ 中的 union 。观察小端和大端平台上的字节顺序。如果您使用第二种方法,还要将接收者 float 重新解释为 unsigned char 数组,而不是相反,以避免对齐问题。

关于c++ - 将一个 float 分成单个字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20764550/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com