函数说明

相关函数:htonl, htons, ntohl

头文件:#include

定义函数:unsigned short int ntohs(unsigned short int netshort);

函数说明:ntohs()用来将参数指定的16 位netshort 转换成主机字符顺序.

返回值:返回对应的主机顺序.

范例:参考getservent().

在C/C++写网络程序的时候,往往会遇到字节的网络顺序和主机顺序的问题。这是就可能用到htons(), ntohl(), ntohs(),htons()这4个函数。

网络字节顺序与本地字节顺序之间的转换函数:

htonl()--"Host to Network Long"

ntohl()--"Network to Host Long"

htons()--"Host to Network Short"

ntohs()--"Network to Host Short"

之所以需要这些函数是因为计算机数据表示存在两种字节顺序:NBO与HBO

网络字节顺序NBO(Network Byte Order):

按从高到低的顺序存储,在网络上使用统一的网络字节顺序,可以避免兼容性问题。

主机字节顺序(HBO,Host Byte Order):

不同的机器HBO不相同,与CPU设计有关,数据的顺序是由cpu决定的,而与操作系统无关。

如 Intel   x86结构下,short型数0x1234表示为34   12, int型数0x12345678表示为78   56   34   12

如IBM   power PC结构下,short型数0x1234表示为12   34, int型数0x12345678表示为12   34   56   78

由于这个原因不同体系结构的机器之间无法通信,所以要转换成一种约定的数序,也就是网络字节顺序,其实就是如同power   pc那样的顺序 。在PC开发中有ntohl和htonl函数可以用来进行网络字节和主机字节的转换。

【网络编程一】主机字节序与网络字节序以及ip地址转换函数

在计算机设计之初,对内存中数据的处理也有不同的方式,(低位数据存储在低位地址处或者高位数据存储在低位地址处),然而,在通信的过程中(ISO/OSI模型和TCP/IP四层模型中),数据被一步步封装(然后 ...

c# 主机和网络字节序的转换 关于网络字节序和主机字节序的转换

最近使用C#进行网络开发,需要处理ISO8583报文,由于其中有些域是数值型的,于是在传输的时候涉及到了字节序的转换. 字节顺序是指占内存多于一个字节类型的数据在内存中的存放顺序,通常有两种字节顺序, ...

在C语言中基本数据类型所占的字节数

基本数据类型所占的字节数其实跟C语言本身没有太大的关系,它取决于编译器的位数,下面这张表说明了不同编译器下基本数据类型的长度: 32位编译器中各基本类型所占字节数: 注:对于32位的编译器,指针变量的 ...

Java 语言中一个字符占几个字节?

Java中理论说是一个字符(汉字 字母)占用两个字节. 但是在UTF-8的时候 new String("字").getBytes().length 返回的是3 表示3个字节 作者: ...

C语言中几种类型所占字节数

其实C标准并没有具体给出规定哪个基本类型应该是多少个字节数,而且这个也与OS.编译器有关,比如同样是在32位操作系统,VC++的编译器下int类型为4个字节,而在tuborC下则是2个字节. 下面给出 ...

C语言中以文本方式读写文件时换行符转换的注意事项

我们知道在UNIX下是没有回车符(\r)的,只有换行符(\n),而C语言诞生于UNIX(Linux即面向开源的UNIX,Mac OS也是UNIX发展而来的,而Windows是从MS-DOS发展而来,与 ...

浅谈C#语言中的各种数据类型,与数据类型之间的转换

什么是数据类型? 数据类型,百度百科是这样解释的:数据类型在数据结构中的定义是一个值的集合以及定义在这个值集上的一组操作.这样的解释对于一个初学者来说未必太过于深奥. 简单点说,数据类型就是不同长度的 ...

c++和python如何实现主机字节序和网络字节序的相互转换

在上一篇文章网络编程:主机字节序和网络字节序中,介绍了主机字节序和网络字节序的基本概念以及在实际的编程中,何时需要进行网络字节序和主机字节序的转换.本篇文章着重介绍使用c++和python语言,如何实 ...

Python网络编程——主机字节序和网络字节序之间的相互转换

If you ever need to write a low-level network application, it may be necessary to handle the low-lev ...

随机推荐

小Q系列之失恋

这个题其实不难  仔细想想,, 注意题中要求的是一天是12个小时 #include #include #include

BZOJ3236: [Ahoi2013]作业

Description Input Output Sample Input 3 4 1 2 2 1 2 1 3 1 2 1 1 1 3 1 3 2 3 2 3 Sample Output 2 2 1 ...

uva 10051

将每一个分解为六个两面的 简单地dp 回溯输出路径..... #include #include #include

USACO 1.3 Wormholes

Wormholes Farmer John's hobby of conducting high-energy physics experiments on weekends has backfire ...

CentOS的改变系统启动级别

CentOS7改变系统启动级别   systemctl命令:   文本模式:systemctl set-default multi-user.target 图形模式:systemctl set-def ...

QT制作一个图片播放器

前言:使用qt制作了一个简单的图片播放器,可以播放gif.png等格式图片 先来看看播放器的功能(当然是很简陋的,没有很深入的设计): 1.点击图片列表中图片进行播放. 2.自动播放,播放的图片的间隔 ...

bzoj 1875: [SDOI2009]HH去散步

Description HH有个一成不变的习惯,喜欢饭后百步走.所谓百步走,就是散步,就是在一定的时间 内,走过一定的距离. 但 是同时HH又是个喜欢变化的人,所以他不会立刻沿着刚刚走来的路走回. 又 ...

linu输出重定向

1.tee命令 ls | tee filename #若出现Permission Denied使用下面 ls | sudo tee filename #清空filename后重写 ls | sudo ...

解决Ubuntu自带编译器不好使问题

解决Ubuntu自带编译器不好使问题 1.删除Ubuntu自带的tiny版本,这个版本用起来很别扭不好使. 2.安装full版本的vim 3.显示效果:full版本. 之前自带的版本:

js——作用域和闭包

1. js是编译语言,但是它不是提前编译,编译结果不能在分布式系统中移植.大部分情况下,js的编译发生在代码执行前的几微秒(甚至更短) 2. 一般的编译步骤   分词/词法分析:把字符串分解成词法单元 ...

c语言网络字节序整数,c语言中网络字节序和主机字节序的转换相关推荐

  1. C语言实数四舍五入为整数,c语言输入一个实数,求其四舍五入的整数

    输入两个正整数m和n,求其最大公约数和最小公倍数.用C语言编程 输入两个正整数m和n,求其最大公约数和最小公倍数.用辗转相除法求最大公约数算法描述:m对n求余为a,若a不等于0则m0){m_cup=m ...

  2. c语言文件按字节读取整数,C语言逐行读取文件

    C语言可以说是我学习的第一门语言,不过似乎也是忘的最多的一门语言,自从因为项目需要重新拾起C语言,我的噩梦就开始了. 依稀记得大二学习数据结构时编程解决"约瑟夫环"."迷 ...

  3. c语言字符怎么变成整数,c语言,字符串转换成整数

    c语言的数字字符串转换为整数,1.可接受"123 2123"处理为1232123;2.空指针.正负号.非纯数字字符串.数据越界溢出的错误处理. #include #include ...

  4. c语言十六进制字符串转整数,C语言-提取字符串中的十六进制数字并转换为一个十进制整数输出...

    问题描述:提取字符串中的十六进制数字并转换为一个十进制整数输出 源代码: /*十六进制转换成十进制*/ #include int main(void) { int i,k; char hexad[80 ...

  5. 网络字节序 —— 主机字节序 (Socket编程) 转

    在对IP地址结构体SOCKADDR_IN赋值的时候,经常会用到下列的函数htonl,htons,inet_addr,与之相对应的函数是ntohl,ntohs,inet_ntoa.查看这些函数的解析,会 ...

  6. 网络字节序与主机字节序的相互转换

    1.网络字节序与主机字节序 在Linux网络编程中,经常碰到网络字节序与主机字节序的相互转换.说到网络字节序与主机字节序需要清晰了解以下几个概念. 字节序,顾名思义,指字节在内存中存储的顺序.比如一个 ...

  7. 【Linux】主机字节序和网络字节序

    (一)问题提出:为什么要有主机字节序和网络字节序的存在? 现在大多数PC机器都是小端字节序(小端存储),也称为主机字节序:但不排除有大端PC机器的存在. 若在两台字节序不同的主机上传输数据时,接收端将 ...

  8. Golang 主机字节序的判断

    字节序按类别分两种,一种是小端(Little Endian),另一种是大端(Big Endian). (1)小端字节序,指一个单元在计算机中存放时按照低位在低地址,高位在高地址的模式存放: (2)大端 ...

  9. java中double类型占几个字节_java中各种数据类型占用字节数

    1字节(Byte)=8bit java的基本类型 类型 所占字节 byte 1 short 2 int 4 long 8 float 4 double 8 char 2 String中字母和汉字所占字 ...

  10. java 网络字节序转主机字节序_C语言高级编程——网络编程技术

    了解什么是网络编程 熟悉七层网络模型 熟悉网络开发中使用到的函数 掌握TCP协议类程序开发 掌握UDP协议类程序开发 计算机本身是不会进行网络通信的,所以要想使通过软件进行网络通信,必须制定相应的规则 ...

最新文章

  1. 基础知识——if语句和字典(四)
  2. 如何建立顺畅的项目流程
  3. 【大吉大利 今晚吃包】002 - array-first
  4. O027、看nova-scheduler如何选择计算节点
  5. windows远程下载
  6. 重温JSP学习笔记--El表达式
  7. 强化学习《基于价值 - Dueling Q-Learning》
  8. java线程使用不当,java多线程使用不当造成的问题
  9. Flash制作空战游戏
  10. 西威变频器使用说明书_西威变频器调试说明.doc
  11. 线性代数学习笔记(二)——n阶行列式
  12. 第二章 搭建Android开发环境
  13. 【杂谈与乱码】我们过度解读了鲁迅先生了么?
  14. Sql 从一个表往另一个表里插数据
  15. informix数据库unload导出数据问题
  16. 深度学习_深度学习基础知识_TTA(测试时增强)
  17. 通用二维码生成 API 接口
  18. 万物互联来袭 你准备好迎接5G新时代了吗?
  19. MySQL解决-Error:Your password does not satisfy the current policy requirements
  20. git将本地代码推到远程仓库

热门文章

  1. python元组的定义方式_python基础之元组(Tuple)、字典(Dictionary)详解
  2. 房子装饰风水有哪些讲究和忌讳
  3. 使用ps命令结束相应进程
  4. Flowable源码注释(三十二)任务超时作业
  5. 皇后游戏c语言,C语言中关于4皇后或8皇后问题!
  6. bootstrap table合计行单元格隐藏和列宽设置
  7. C语言——二项式定理
  8. 【板栗糖GIS】bat—怎么删除子文件夹下的同后缀名的数据
  9. 【C++】std::numeric_limits 类型对应最值查询
  10. w ndows无法完成格式化,Windows无法完成格式化怎么办呢?教你解决U盘问题!