linux编译ntohl加什么库,C ++中的64位ntohl()?
我建议阅读以下内容:http : //commandcenter.blogspot.com/2012/04/byte-order-fallacy.html
#include
#include
#include
uint64_t
ntoh64(const uint64_t *input)
{
uint64_t rval;
uint8_t *data = (uint8_t *)&rval;
data[0] = *input >> 56;
data[1] = *input >> 48;
data[2] = *input >> 40;
data[3] = *input >> 32;
data[4] = *input >> 24;
data[5] = *input >> 16;
data[6] = *input >> 8;
data[7] = *input >> 0;
return rval;
}
uint64_t
hton64(const uint64_t *input)
{
return (ntoh64(input));
}
int
main(void)
{
uint64_t ull;
ull = 1;
printf("%"PRIu64"\n", ull);
ull = ntoh64(&ull);
printf("%"PRIu64"\n", ull);
ull = hton64(&ull);
printf("%"PRIu64"\n", ull);
return 0;
}
将显示以下输出:
1
72057594037927936
1
如果删除高4个字节,则可以使用ntohl()进行测试。
您也可以将其转换为C ++中不错的模板函数,该函数可以在任何大小的整数上工作:
template
static inline T
hton_any(const T &input)
{
T output(0);
const std::size_t size = sizeof(input);
uint8_t *data = reinterpret_cast(&output);
for (std::size_t i = 0; i < size; i++) {
data[i] = input >> ((size - i - 1) * 8);
}
return output;
}
现在您的128位安全了!
linux编译ntohl加什么库,C ++中的64位ntohl()?相关推荐
- Metrics_collector还没有添加到共享预加载库(shared_preload_libraries)中
gpcc踩坑 本文最大的锅,最大的坑来了 安装完成之后会报以下错误!你可以完全忽略错误的解决过程直接跳到最后! Metrics_collector还没有添加到共享预加载库(shared_preload ...
- 在64位win10中开启64位ie浏览器的方法
在win10中开启64位ie浏览器 话是这样说,但是实际上,64位win10上(通常为ie11),已经不在有所谓32位ie或64位ie了,这是我阅读大量的windows社区文档得到的结果.如下图所示. ...
- Android 11中对于64位应用arm执行MTE导致crash的问题
前言 App 64位包在Android 11上crash,崩溃堆栈也很诡异,报了一个native的空指针,代码中一个函数参数为int64_t类型的指针,并且确定不为空! 分析 在仔细调试时,发现函数中 ...
- 在win10中开启64位ie浏览器的方法(IE11)
** 在64位win10中开启64位ie浏览器的方法(IE11) 步骤一 打开ie浏览器,设置->Internet选项->高级,找到,启用增强保护模式 和 针对增强保护模式启用64位进程, ...
- MongoDB中关于64位整型存储解决方案
为什么80%的码农都做不了架构师?>>> 社区内一哥们@smcboy 提出关于php中操作MongoDB存储整数问题,找到点资料花点时间翻译过来,是个很好的学习方式.@红薯 那 ...
- 无法在VMware Player中安装64位系统
无法在VMware Player中安装64位系统 下载了VMware Player用来安装ubuntu的64位系统,配置完成后,开启VM.提示bios中未开启intel VT-X 也就是intel的虚 ...
- visual studio code Python终端运行_微软常用运行库合集32/64位只需一键全部安装
微软常用运行库合集32/64位这些运行库都是采用Microsoft Visual Studio 20XX编写的软件必须使用的公用DLL运行库,相当于程序的字典文件:只需要一键全部安装,堪称装机必备神器 ...
- 树莓派linux编译不了动态库,linux系统下的树莓派与Qt 5.12.3源码的交叉编译
{写在前面:按照这个方法,基本可以成功在linux系统下交叉编译Qt5.12.3,其他版本的源码也编译} 我的环境:Linux Mint 19.1;树莓派 3;Qt源码5.12.3 当两个系统全部安装 ...
- 反编译所有图片加载库,让OOM无所遁形!
码个蛋(codeegg) 第 989 次推文 作者:ZhouZhengyi 链接:https://juejin.im/post/5ea1c46851882573a25f3ec3 1.背景 最近看滴滴开 ...
最新文章
- 替换openjdk的版本时遇到报错Transaction check error
- 201506251117_《react——所需知识、主要技术》
- mysql 临时表 汉字_转MySQL临时表的简单用法
- Sun过去的世界中的JDK 11和代理
- html4符合web的标准吗,在生成HTML,表格等时,CakePhp是否“符合标准”?
- python查看运行内存占用_python中使用psutil查看内存占用的情况
- 最暖的10个小故事,看完心都融化了
- 暴露年龄系列!这些手机系统 你用过几个?
- Spring 框架基础(03):核心思想 IOC 说明,案例演示
- QQ去水印小程序源码全新系统
- 极通EWEBS 3.0应用虚拟化系统--打造国内首款完美集中管理平台极通EWEBS
- 可取回的国内csgo开箱网站incsgo开箱
- Unity初学者Shader Graph教程
- 中年程序员失业的3条退路!
- 高中数学必考公式全总结
- 虚拟机无网络连接解决方法
- STD高级语言程序设计第二天(满分答案)
- 领峰:黄金价格走势图的分析你懂吗?
- 伺服电机原点位置在运行一段时间后发生偏移
- Mangos付魔公式代码