c - 如何将 char 数组的部分转换为 float?

标签 c arrays floating-point char converters

我已将 float 转换为字符数组,该数组将发送到服务器。我希望能够将 char 数组转换为从 buffer[10]... 到 buffer [20] 转换回单个 float 。我怎样才能做到这一点?我只知道如何使用 atoi 转换整个缓冲区,但由于我的 char 缓冲区将包含其他不相关的数据,我如何有选择地对数组的某些部分执行此操作?

这就是我将 float 转换为 char 数组的方法。

  sprintf(game->buffer,"%f",game->man[playerNumber-48].x);

    //printf("%s\n", game->buffer);

    for(int i = 0; i<11;i++)
    {
        game->send_key_to_server[i+8] = game->buffer[i];
    }

    sprintf(game->buffer,"%f",game->man[playerNumber-48].y);

    for(int i = 0; i<11;i++)
    {
        game->send_key_to_server[i+19] = game->buffer[i];
    }

基本上我将我的玩家 x 和 y 坐标作为字符发送到服务器。

最佳答案

阅读评论,您可能想要做的是序列化和反序列化数据,以便可以将其作为原始数据通过某种形式的通信媒体发送。

出于此目的,转换为 ASCII 没有任何意义。相反,您需要一种最紧凑的原始数据格式。如果两台计算机具有相同的浮点格式和相同的字节序,则这是可能的。如果是这样,您可以简单地执行以下操作:

memcpy(buf, &my_float, sizeof(float)); // transmitter side
memcpy(&my_float, buf, sizeof(float)); // receiver side

其中“buf”是您用来发送/接收数据的任何数据缓冲区。

关于c - 如何将 char 数组的部分转换为 float?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44151968/

相关文章:

c++ - Hook ishellfolder enumobjects

c++ - 可变参数模板和构造函数

arrays - pandas_udf 对两个 ArrayType(StringType()) 字段进行操作

c - 嵌入式应用程序的浮点库

MySQL浮点比较问题

c - 大浮点和的精度

在不知道 C 中类型的情况下将 void 指针转换为 double

c - 使用嵌套开关 fork 两个 child

c - C 预处理器宏中的正则表达式

c - 将数组的值传递到循环的开头