当前位置: 首页 > 知识库问答 >
问题:

如何在主机和网络字节顺序之间转换double?

巢海
2023-03-14
uint32_t htonl(uint32_t hostlong);
uint16_t htons(uint16_t hostshort);
uint32_t ntohl(uint32_t netlong);
uint16_t ntohs(uint16_t netshort);

所以,如果有人在这方面帮助我,我会非常感激(C代码会很棒!)。注:操作系统为Linux内核(2.6.29),ARMv7 CPU架构。

共有1个答案

房唯
2023-03-14

您可以查看IEEE 754中的浮点交换格式。

但关键应该是定义一个网络顺序,例如。1.字节指数和符号,字节2至n为msb顺序的尾数。

然后您可以声明您的函数

uint64_t htond(double hostdouble);
double ntohd(uint64_t netdouble);
static void htond (double &x)
{
  int *Double_Overlay; 
  int Holding_Buffer; 
  Double_Overlay = (int *) &x; 
  Holding_Buffer = Double_Overlay [0]; 
  Double_Overlay [0] = htonl (Double_Overlay [1]); 
  Double_Overlay [1] = htonl (Holding_Buffer); 
}
void htond (const double hostDouble, uint8_t result[8])
{
  result[0] = signOf(hostDouble);
  result[1] = exponentOf(hostDouble);
  result[2..7] = mantissaOf(hostDouble);
}
 类似资料:
  • 字节序 大端:起始地址存储高序字节 小端:起始地址存储低序字节 网络协议都使用网络字节序(大端)。主机上的字节序称为主机字节序(有的系统采用大端,有的系统采用小端) 字节序转换函数函数原型 /* 有些系统中#include <netinet/in.h> */ #include <arpa/inet.h> uint16_t htons(uint16_t host16bitvalue); uint32

  • 问题内容: 我正在使用hibernate将对象映射到数据库。客户端(iOS应用程序)向我发送JSON格式的特定对象,我使用以下实用程序方法将其转换为真实的表示形式 但是问题是,在我的pogo中,我将值存储为byte [],如下所示(因为这是存储在数据库中的内容-blob) 当然,现在转换失败了,因为它无法在byte []和String之间进行转换。 这是更改构造函数以接受String而不是字节数组

  • 问题内容: 我正在使用休眠将对象映射到数据库。客户端(iOS应用程序)向我发送了JSON格式的特定对象,我使用以下实用程序方法将其转换为真实的表示形式 但是问题是,在我的pogo中,我将值存储为byte [],如下所示(因为这是存储在数据库中的内容-blob) 当然,现在转换失败了,因为它无法在byte []和String之间进行转换。 这是更改构造函数以接受String而不是字节数组,然后在设置

  • 我有一个 docker 容器,我想给它 --network=host AND -。我需要连接到主机网络才能将主机数据狗服务器 (UDP) 和 网络用于其数据库。 尝试添加这两个网络会导致。 知道正确的处理方法吗?

  • 我有一个列是使用在hibernate中映射的。如何使用本机Oracle SQL根据Oracle存储和检索这些值? 该列映射为。我尝试使用我为Unix时间戳找到的一些公式,但它们似乎没有产生正确的结果。 我想用使用Hibernate Envers。我遇到了麻烦,因为我正在将Envers应用到没有审计历史记录的现有记录的数据库中。我要做的是一次性插入审计数据,使用Oracle作为时间戳。

  • 问题内容: 我有一个JFileChooser,我需要以编程方式将其currentDirectory设置为包含多个SMB共享(例如)的网络主机。从技术上讲,这不是“目录”,而是代表可用共享列表的shell文件夹。 JFileChooser导航到特定共享(例如)没有问题,但是不能处理主机“目录”本身(例如)。 用户可以通过“网络”外壳文件夹,或找到特定的共享并导航至其父目录,来导航至JFileChoo