htonl相关内容

htons中的混乱-小端/大端

当我通过socket将一个整数变量从一个进程发送到另一个进程,然后在接收端打印该值,不使用ntohl/htonl,该值仍然相同,那么除了初始化我还需要在哪里使用这些函数套接字结构.我理解小/大端.但是为什么我们需要在值保持不变的情况下将端口和 IP 号转换为主机/网络字节顺序.请详细说明整数是如何通过网络传输的? 解决方案 如果你希望你的程序是可移植的,那么任何时候你通过网络发送一个大于 ..
发布时间:2022-01-19 16:13:38 其他开发

有没有什么“标准"?C++ 中 64 位整数的类似 htonl 的函数?

我正在研究 memcache 协议的实现,该协议在某些时候使用 64 位整数值.这些值必须以“网络字节顺序"存储. 我希望有一些 uint64_t htonll(uint64_t value) 函数来进行更改,但不幸的是,如果它存在,我找不到它. 所以我有 1 或 2 个问题: 是否有任何便携式(Windows、Linux、AIX)标准函数来执行此操作? 如果没有这样的功能,你 ..
发布时间:2021-11-25 05:00:45 C/C++开发

IPv6下网络字节顺序没有意义吗?

如果我们使用32位整数存储IPv4地址,则必须考虑整数的字节顺序. 但是,由于几乎在所有平台上都没有内置的128位整数类型,因此必须将IPv6地址存储到字节数组中,因此,我认为字节顺序不再是问题. 我正确吗?还是有针对IPv6的对应功能htonlXXX? 解决方案 IPv6确实要求ipv6地址的网络字节顺序.hton和ntoh都是将地址从您在代码中的存储方式转换为需要在数据包中 ..
发布时间:2021-05-18 18:30:49 C/C++开发

小尾数法中的ntohl()vs htonl()

请澄清我的疑问,因为我对以下内容感到非常困惑,并且在网上的其他任何地方都无法获得 干净的答案。 #include int main() { int a = 0x44332211; printf(“ Network-0x%x\n”,htonl(a)); //主机到网络 printf(“ Host-0x%x\n”,ntohl(a)) ; //托管 的网络返回0 ..
发布时间:2020-10-29 18:38:40 其他开发

可移植的C二进制序列化原语

据我所知,C库在将数值序列化为非文本字节流方面没有任何帮助.如果我错了,请纠正我. 使用中最标准的工具是POSIX中的 htonl 等.这些功能有缺点: 不支持64位. 没有浮点支持. 没有用于签名类型的版本.反序列化时,无符号到有符号的转换依赖于有符号整数溢出,即UB. 他们的名字没有说明数据类型的大小. 它们取决于8位字节以及确切大小的uint_ N _t的存在. 输入类 ..
发布时间:2020-05-29 01:44:40 其他开发

c ++ server htons to java ntohs客户端转换

我正在创建一个小的TFTP客户端 服务器应用程序,其中开发服务器 使用c ++和客户端使用java。 “ 但是我无法将它转换回来,因此使用 htons 到客户端的原始值。 例如,如果发送块计数 ntohs(01)(2字节)从服务器到 客户端。客户端正在读取字节。 我收到的值是字节0 和字节1。 如果任何一个可以提供 解决方案。 p> 解决方案 我认为 ..
发布时间:2016-10-27 22:06:55 Java开发

还有ntohs()和ntohl()相同呢?

是否有网主办的C#转换函数?谷歌搜索,并没有找到太多。 :P 解决方案 的 IPAddress.HostToNetworkOrder 和的 IPAddress.NetworkToHostOrder ? 每个方法有16位,32位和64位的整数重载。 ..
发布时间:2016-09-07 11:33:37 C#/.NET

如何转换__u32在Linux内核__be32

我有一个变量 __ BE32 X; 我有一个函数 __ U32富(无效){ __u32一个; 返回; } 我需要存储的foo变量返回X 。 X = htonl(富()); 是不是正确的? 我有一个困惑什么是返回类型 ntohl()和 htonl()的。他们是彼此的对立面? 要检查输出,我需要重新编译内核,我不想麻烦我的任何错误的系统。所以我问在这里。 解决 ..
发布时间:2016-08-23 11:14:36 C/C++

混乱htons-小端/大端

当我通过socket发送一个整数变量从一个程序到其他,然后在收到最终打印值,该值仍然是相同的,而无需使用ntohl / htonl,然后我在哪里需要使用不是初始化等这些功能插座的结构。我明白豆蔻/大端。但是为什么我们需要转换端口和IP号到主机/网络字节顺序时,值将保持不变。请详细说明整数如何tranferred通过网络? 解决方案 如果你希望你的程序可以移植,那么任何时候你的规模通过网络发 ..
发布时间:2016-08-21 19:55:10 C/C++

举办​​网络双?

我想通过网络发送一些双precision浮点数。 (标准C,标准插座)没有htond或ntohd将数据转换和从网络字节顺序。我该怎么办?我在我的头上一对夫妇的解决方案,但我想知道常见的做法是什么。 (我也想知道什么是发送64位整数,像GStreamer的使用gint64值普遍的做法) 编辑: 这是一个解决方案我想到的。我presume它适用于任何规模大小的整数,但它是正确的双打? 无效sw ..
发布时间:2016-08-19 13:57:12 C/C++

是否投在内存变量的签署和unsigned int保持精确的位模式之间?

我想通过插座来传递一个32位有符号整数 X 。为了使接收器知道预期的字节顺序,我打电话 htonl(X)发送之前。 htonl 需要一个 uint32_t的不过,我想可以肯定,当我投会发生什么我的 int32_t 到 uint32_t的。 int32_t X =东西; uint32_t的U =(uint32_t的)X; 是不是总是如此,在字节x 和 U 每个将是完全一样的吗?有关转换回什么 ..
发布时间:2016-08-18 22:35:53 C/C++

是否有任何与QUOT;标准" htonl样的功能在C ++ 64位整数?

我工作的memcache的协议,该协议,在某些点上,使用64位整数的实现。这些数据必须存储在“网络字节顺序”。 我希望有一些 uint64_t中htonll(uint64_t中值)函数来完成的改变,但不幸的是,如果它存在,我怎么也找不到它。 所以,我有1个或2个问题: 是否有任何的移动(在Windows,Linux,AIX)标准功能做到这一点? 如果没有这样的功能,你会如何实现它? 我心里 ..
发布时间:2015-11-28 11:50:57 C/C++开发