一、基础知识
二进制表示: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原理与用法详解