我建议阅读以下内容: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()?相关推荐

  1. Metrics_collector还没有添加到共享预加载库(shared_preload_libraries)中

    gpcc踩坑 本文最大的锅,最大的坑来了 安装完成之后会报以下错误!你可以完全忽略错误的解决过程直接跳到最后! Metrics_collector还没有添加到共享预加载库(shared_preload ...

  2. 在64位win10中开启64位ie浏览器的方法

    在win10中开启64位ie浏览器 话是这样说,但是实际上,64位win10上(通常为ie11),已经不在有所谓32位ie或64位ie了,这是我阅读大量的windows社区文档得到的结果.如下图所示. ...

  3. Android 11中对于64位应用arm执行MTE导致crash的问题

    前言 App 64位包在Android 11上crash,崩溃堆栈也很诡异,报了一个native的空指针,代码中一个函数参数为int64_t类型的指针,并且确定不为空! 分析 在仔细调试时,发现函数中 ...

  4. 在win10中开启64位ie浏览器的方法(IE11)

    ** 在64位win10中开启64位ie浏览器的方法(IE11) 步骤一 打开ie浏览器,设置->Internet选项->高级,找到,启用增强保护模式 和 针对增强保护模式启用64位进程, ...

  5. MongoDB中关于64位整型存储解决方案

    为什么80%的码农都做不了架构师?>>>    社区内一哥们@smcboy 提出关于php中操作MongoDB存储整数问题,找到点资料花点时间翻译过来,是个很好的学习方式.@红薯 那 ...

  6. 无法在VMware Player中安装64位系统

    无法在VMware Player中安装64位系统 下载了VMware Player用来安装ubuntu的64位系统,配置完成后,开启VM.提示bios中未开启intel VT-X 也就是intel的虚 ...

  7. visual studio code Python终端运行_微软常用运行库合集32/64位只需一键全部安装

    微软常用运行库合集32/64位这些运行库都是采用Microsoft Visual Studio 20XX编写的软件必须使用的公用DLL运行库,相当于程序的字典文件:只需要一键全部安装,堪称装机必备神器 ...

  8. 树莓派linux编译不了动态库,linux系统下的树莓派与Qt 5.12.3源码的交叉编译

    {写在前面:按照这个方法,基本可以成功在linux系统下交叉编译Qt5.12.3,其他版本的源码也编译} 我的环境:Linux Mint 19.1;树莓派 3;Qt源码5.12.3 当两个系统全部安装 ...

  9. 反编译所有图片加载库,让OOM无所遁形!

    码个蛋(codeegg) 第 989 次推文 作者:ZhouZhengyi 链接:https://juejin.im/post/5ea1c46851882573a25f3ec3 1.背景 最近看滴滴开 ...

最新文章

  1. 替换openjdk的版本时遇到报错Transaction check error
  2. 201506251117_《react——所需知识、主要技术》
  3. mysql 临时表 汉字_转MySQL临时表的简单用法
  4. Sun过去的世界中的JDK 11和代理
  5. html4符合web的标准吗,在生成HTML,表格等时,CakePhp是否“符合标准”?
  6. python查看运行内存占用_python中使用psutil查看内存占用的情况
  7. 最暖的10个小故事,看完心都融化了
  8. 暴露年龄系列!这些手机系统 你用过几个?
  9. Spring 框架基础(03):核心思想 IOC 说明,案例演示
  10. QQ去水印小程序源码全新系统
  11. 极通EWEBS 3.0应用虚拟化系统--打造国内首款完美集中管理平台极通EWEBS
  12. 可取回的国内csgo开箱网站incsgo开箱
  13. Unity初学者Shader Graph教程
  14. 中年程序员失业的3条退路!
  15. 高中数学必考公式全总结
  16. 虚拟机无网络连接解决方法
  17. STD高级语言程序设计第二天(满分答案)
  18. 领峰:黄金价格走势图的分析你懂吗?
  19. 伺服电机原点位置在运行一段时间后发生偏移
  20. Mangos付魔公式代码

热门文章

  1. Matlab替换wrfinput数据,WRF模式之个例模拟
  2. 【CAD二次开发】-ObjectARX-扩展数据 (Xdata)
  3. 经颅电刺激对生理和病理衰老过程中情景记忆的影响
  4. VRP问题总结——直观理解
  5. 计算机网络第六章复习笔记(JLU复习版)
  6. ICSE 2019 会议论文总结
  7. 网际快车FlashGet全新使用技巧精彩荟萃
  8. 计算机如何存数? 2 8 10 16进制的转换。
  9. OCX控件开发及WEB Javascript如何使用OCX控件
  10. C++多线程-生产者与消费者模型