做网络通信时需要了解的几个概念

来源:互联网 发布:php 二维数组push元素 编辑:程序博客网 时间:2024/05/17 03:59

Windows数据类型  http://baike.baidu.com/view/5592940.htm

字节 http://baike.baidu.com/view/44243.htm

WORD  http://baike.baidu.com/view/23213.htm

win32 SDK中定义的WORD和DWORD类型是整型类。其中WORD其是16-bit unsigned integer,即只有16位,表示范围0到65535之间的小数;DWORD为 32-bit unsigned integer,即有32位。二者的位数不会随计算机位数的变化而变化。

  WORD包含与windows.h文件中,可通过sizeof(WORD)查看该类型的长度大小。

  这个数据类型在WinDef.h中是这样定义的:

  typedef unsigned short WORD

DWORD http://baike.baidu.com/view/999769.htm

DWORD值(REG_DWORD)

  由 4 字节长(32 位整数)的数字表示的数据。设备驱动程序和服务的许多参数都是此类型,以二进制、十六进制或十进制格式显示在注册表编辑器中。REG文件中一般表现为“a”=“dword:00000001”。1个二进制位称为1个bit(位),8个二进制位称为1个Byte(字节),8 bit = 1 byte。2个字节就是1个Word(1个字,16位),DWORD(Double Word)就是双字的意思,两个字(32位)。

  typedef unsigned long DWORD;

  关于DWORD使用中重要的一点。DWORD 现在表示 32bit 无符号整数,即使以后 Windows 升级到64位,DWORD 仍然是 32bit 无符号整数(也许以后的 long 不是32bit了,只需要重新定义一下 DWORD 就可以了)。对于那些直接和位数有关的整数,最好不用 int, long, short 之类的类型,因为这些类型的位数可能不确定(比如,在16位程序里,int 是16位的,在32位程序里,int 是32位的,谁知道在以后的64位程序里,int 是多少位,long 又是多少位)。用重新定义的类型就没有这方面的问题了,最多到时候修改一下定义就可以了,而不需要在程序里一行一行的查找。

BCD码 http://baike.baidu.com/view/45179.htm

BCD码也叫8421码就是将十进制的数以8421的形式展开成二进制,大家知道十进制是0~9十个数组成,这十个数每个数都有自己的8421码:

  0=0000

  1=0001

  2=0010

  3=0011

  4=0100

  5=0101

  6=0110

  7=0111

  8=1000

  9=1001

  举个例子:

  321的8421码就是

  3 2 1

  0011 0010 0001

  原因: 0 0 1 1

  =8x0+4x0+1x2+1x1

  =3

  0 0 1 0

  =8x0+4x0+2x1+1x0

  =2.

  0 0 0 1

  =8x0+4x0+2x0+1x1

  =1

  具体:

  BCD码是四位二进制码, 也就是将十进制的数字转化为二进制, 但是和普通的转化有一点不同, 每一个十进制的数字0-9都对应着一个四位的二进制码,对应关系如下: 十进制0 对应 二进制0000 ;十进制1 对应二进制0001 ....... 9 1001 接下来的10就有两个上述的码来表示 10 表示为00010000 也就是BCD码是遇见1001就产生进位,不象普通的二进制码,到1111才产生进位10000

 HEX http://baike.baidu.com/view/1229888.htm

BIN http://baike.baidu.com/view/18747.htm

ASCII http://baike.baidu.com/view/15482.htm

 

原创粉丝点击