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


    一、基础知识

      a、1字节=8位(1Byte=8bit)
         二进制表示:11111111
         十进制表示:255

    计算机内部约定用多少字节来规范数值,比如红绿蓝三色在计算机中只分配了一个字节,一个字节有八位,每一位只能储存1或0,计算机只认识二进制(0与1),所以就是2的八次方,计算机中约定从0开始计数,所以是0至255,长度是256.

    8位 1 1 1 1 1 1 1 1
    2的N次方 7 6 5 4 3 2 1 0
    2^N的值(10进制整数值) 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 

    16进制,每位占用4bit

     1111  1111
    16表进表示  F  F

     

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

    十进制数5002

    a、二制进值,输出:1001110001010

    b、十六进制值,输出:138a

    c、十六进制 to  十进制,输出5002

    c、按位输出:[0]=138、[1]=19、[2]=0、[3]=0   注意:每位=8bit,4位一组,4*8=32位,二进制完整表示为:00000000 00000000 00010011 10001010

     

    综上,先把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       (注:组合顺序,从大至小,也就是 0 0 13 8a ,与计算机中数组表现顺序相反)

    ------------------------------------------------------------------------

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

    byte[] buffer = { 138, 19 };

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

    在内存中,数值型数据次序与数组是相反的,即低字节在前面,高字节在后面。

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

    总结:也就是从数组中取下标为0以后的两个字节,先各字节转换为16进制,然后倒序组合,转换为10进制。

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

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

  • 相关阅读:
    数据库系统原理与应用教程(007)—— 数据库相关概念
    家庭用户无线上网案例(AC通过三层口对AP进行管理)
    【k8s】(五)kubernetes1.29.4离线部署之-初始化第一个控制平面
    多线程常见面试题
    黑苹果入门:必备工具篇
    matlab2C【g=g1(465:615,200:350);】
    剪映软件专业版的操作与使用,电脑版与手机版APP同步讲解
    帆软FVS大屏之图书馆介绍
    SpringBoot集成WebService(wsdl)
    Mock使用场景
  • 原文地址:https://www.cnblogs.com/event/p/17414103.html