C#中BitConverter.ToUInt16/BitConverter.ToUInt32原理与用法详解

科技资讯 投稿 5800 0 评论

C#中BitConverter.ToUInt16/BitConverter.ToUInt32原理与用法详解

一、基础知识

  二进制表示:11111111
  十进制表示:255

8位 1 1 1 1 1 1 1 1
2的N次方值 7 6 5 4 3 2 1 0
128 64 32 16 8 4 2 1
10进制最大数 255=128+64+32+16+8+4+2+1
10进制最小数 0
最大长度 256=0至255,也就是2的8次方

b、在16进制中,每位16进制占用4bit

十进制:255 
二进制:11111111 
 1111  1111
16表进表示  F  F

 

二、在C#中,如何把二进制转换为10进制与16进度

a、二制进值,输出:1001110001010

综上,先把5002按位输出,采用表格形式展现如下:

位顺序 第1位 (buffer[0] 第2位 (buffer[1] 第3位 (buffer[2] 第4位 (buffer[3]
十进制值 138 19 0 0
二进制 10001010 00010011 00000000 00000000
十六进制 8a 13 0 0

十进制:第4位(buffer[3] * 256 + 第3位(buffer[2] * 256 + 第2位(buffer[1]*256 + 第1位(buffer[0] = 0*256 + 0*256 + 19*256 + 138 = 5002

十六进制:倒序组合,0 0 13 8a =138a =5002

正题:C#中BitConverter.ToUInt16原理与用法

uint highValue = BitConverter.ToUInt16(buffer, 0;  //输出5002

在内存中是(用 16 进制表示)8a ,13,当把这2个字节(从buffer字节数组下标为0开始)当成 int16 时,为 138a(十进制的 5002)。

(十进制  -> 十六进制   -> 倒序  -> 十进制)

so:ToUInt16取2个字节,ToUInt32 取4个字节。ToUInt64 取8个字节,UInt表示无符号整数,无负数范围。

编程笔记 » C#中BitConverter.ToUInt16/BitConverter.ToUInt32原理与用法详解

赞同 (31) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽