当前位置: 首页> 娱乐> 八卦 > 正确的网址格式怎么写_以下什么是网络营销的特点_seo3_东营优化公司

正确的网址格式怎么写_以下什么是网络营销的特点_seo3_东营优化公司

时间:2025/7/14 17:53:06来源:https://blog.csdn.net/tusong86/article/details/143253808 浏览次数:0次
正确的网址格式怎么写_以下什么是网络营销的特点_seo3_东营优化公司

本人在64位linux服务器上(centos7),发现xdr_u_long这个函数有个bug,就是数字的范围如果超过unsigned int的最大值(4294967295)时,xdr_u_long失败。

这个场景主要用在unix时间戳上面,比如一款软件,设置有效期为100年。即失效时间为2124年10月26日,对应的unix时间戳大概为4885545600。而xdr_u_long在编码数字4885545600时,会报错。

经过测试,xdr_u_long所能编码的最大值为4294967295,此时间戳对应的时间大概是2106年。
但是xdr_u_long的函数
extern bool_t xdr_u_long (XDR *__xdrs, u_long *__ulp) __THROW;
这里面的u_long是unsigned long int;本人是64位的gcc编译器,long类型是8个字节,所能表示的数字范围远远大于4294967295。但是4294967296代入这个函数就会报错,对应的c语言代码为:

#include <stdio.h>
#include <rpc/xdr.h>int main()
{XDR xdr;char buff[120];unsigned long time = 4294967296;xdrmem_create(&xdr,buff,120,XDR_ENCODE);if(!xdr_u_long(&xdr, &time)){printf("xdr encode failed\n");return -1;}return 0;
}

如果要编码大于4294967295不报错,可以使用函数xdr_uint64_t。
而uint64_t和u_long的类型是一致的,都是unsigned long int。

所以说xdr_u_long在表示范围大于4294967295时,存在bug。

关键字:正确的网址格式怎么写_以下什么是网络营销的特点_seo3_东营优化公司

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: