首页 > 编程语言 >C#中BitConverter.ToUInt16、BitConverter.ToUInt32原理与用法详解

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

时间:2023-05-19 14:13:31浏览次数:41  
标签:ToUInt32 字节 16 C# buffer BitConverter 256 十进制 进制

一、基础知识

  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表示无符号整数,无负数范围。

标签:ToUInt32,字节,16,C#,buffer,BitConverter,256,十进制,进制
From: https://www.cnblogs.com/event/p/17414103.html

相关文章

  • python使用exchangelib读取、保存exchange邮件
    importosfromdatetimeimportdatetimeimportpytzfromexchangelibimportCredentials,Account,Configuration,DELEGATE,Q,FileAttachmentdefreceived_exchange_message():"""接收exchange邮件,保存邮件到本地:return:""......
  • centos 8 安装python3
    sudodnfinstallpython3  查看版本 查看pip ......
  • TS高级类型 Record、Pick、Partial、Required、Readonly、Exclude、Extract、Omit、No
    keyof获取类型内所有的key,即所有属性名,获取的是一个联合类型这里类型指:通过interface或type定义的类型;通过typeofxxx返回的类型等。keyof后面必须是类型,不能是具体的对象interfaceIPeople{name:string,age?:number,sex:string,}ty......
  • LeetCode/完成任务的最少工作时间段
    一个工作时间段可以连续工作sessiontime个小时给你任务列表task,task[i]表示第i项任务花费时间求完成全部工作所需最小时间段(可以按任意顺序完成任务)1.回溯法回溯时按任务下标推进,边界条件为任务下标等于任务长度同时要记录回溯几个状态,分别是当前任务下标、已用时间段、各......
  • C106M-ASEMI代理KY原厂单向可控硅C106M
    编辑:llC106M-ASEMI代理KY原厂单向可控硅C106M型号:C106M品牌:韩景元\KY封装:TO-126特性:可控硅正向电流:4A反向耐压:600V恢复时间:>2000ns引脚数量:3芯片个数:1芯片尺寸:浪涌电流:40A工作温度:-40℃~125℃C106M应用范围:调光器,电子式镇流器,电机驱动,断电保护器,照相机,开关器,小型马......
  • cmd启动/关闭mysql
    cmd启动/关闭mysqlnetstartmysql#启动mysqlnetstopmysql#关闭mysql#无法运行就在管理员模式下输入命令问题解决先mysqld--install之后再运行启动/关闭命令即可参考https://blog.csdn.net/lovelygirlyuzhu/article/details/123902128......
  • 动态创建ACTIVITY模式
    还记得我们在代理Activity模式里谈到启动插件APK里的Activity的两个难题吗,由于插件里的Activity没在主项目的Manifest里面注册,所以无法经历系统Framework层级的一系列初始化过程,最终导致获得的Activity实例并没有生命周期和无法使用res资源。使用代理Activit......
  • MagicEXIF(元数据编辑器)Win激活旗舰版中文安装教程下载和介绍
    寻找一款好用的MagicEXIF软件可谓是一场漫长的旅程。在搜索引擎中找到的许多下载网站提供的MagicEXIF软件基本都是假的,带有各种广告捆绑软件,让人感到十分沮丧。此外,有些下载版本也无法激活或注册。不过今天小编为大家提供的这个MagicEXIF(元数据编辑器)win激活版本经过测试已完美安......
  • Centos7 设置定时任务
    原文链接:https://blog.csdn.net/weixin_38565317/article/details/127039873配置定时任务1.下载定时任务依赖yuminstallcrontabs12.设置为可用状态并启动systemctlenablecrondsystemctlstartcrond12如图所示,定时任务程序安装过程:3.配置定时任务文件vim/etc/crontab1如......
  • 社招前端二面必会react面试题及答案
    高阶组件的应用场景权限控制利用高阶组件的条件渲染特性可以对页面进行权限控制,权限控制一般分为两个维度:页面级别和页面元素级别//HOC.jsfunctionwithAdminAuth(WrappedComponent){returnclassextendsReact.Component{state={......