当前位置: 首页 > news >正文

C# byte[] 与 int 类型互转

本文讲述在C#中,怎样使用 BitConverter 类将字节数组转换为 int 然后又转换回字节数组的过程。

为什么需要这样呢?这是因为,比如说,在从网络读取字节之后,可能需要将字节转换为内置数据类型。 除了示例中的 ToInt32(Byte[], Int32) 方法之外,下面还列出了一些 BitConverter 类中将字节(来自字节数组)转换为其他内置类型的方法。

bool ToBoolean(Byte[], Int32)
char ToChar(Byte[], Int32)
double ToDouble(Byte[], Int32)
short ToInt16(Byte[], Int32)
int ToInt32(Byte[], Int32)
long ToInt64(Byte[], Int32)
float ToSingle(Byte[], Int32)
ushort ToUInt16(Byte[], Int32)
uint ToUInt32(Byte[], Int32)
ulong ToUInt64(Byte[], Int32)

下面的例子会初始化字节数组,并在计算机体系结构为 little-endian(即首先存储最低有效字节)的情况下反转数组,然后调用 ToInt32(Byte[], Int32) 方法以将数组中的四个字节转换为 int。 ToInt32(Byte[], Int32) 的第二个参数指定字节数组的起始索引。
注意:输出可能会根据字节大小端而不同。

byte[] bytes = { 0, 0, 0, 25 };
// 倘若系统架构是little-endian(小端序),则将字节数组反转。
if (BitConverter.IsLittleEndian)
Array.Reverse(bytes);
int i = BitConverter.ToInt32(bytes, 0);
Console.WriteLine("int: {0}", i);
// 输出: int: 25

在下面的例子中,将调用 BitConverter 类的 GetBytes(Int32) 方法,将 int 转换为字节数组。

注意:输出可能会根据计算机体系结构的字节顺序而不同。

byte[] bytes = BitConverter.GetBytes(201805978);
Console.WriteLine("byte array: " + BitConverter.ToString(bytes));
// 输出: byte array: 9A-50-07-0C

参考:
1. 《BitConverter class》: https://learn.microsoft.com/en-us/dotnet/api/system.bitconverter
2. 《理解字节序 · 阮一峰》: https://www.ruanyifeng.com/blog/2016/11/byte-order.html
 

http://www.lryc.cn/news/66150.html

相关文章:

  • MySQL---多表联合查询(上)(多表关系、外键约束、学生成绩多表关系、交叉连接查询)
  • 【iOS】—— RunLoop线程常驻和线程保活
  • Springcloud--docker快速入门
  • 基于AT89C51单片机的电子计数器设计与仿真
  • IT程序员如何面对35岁大龄问题?我从公司老板的角度聊聊
  • 【计算机专业漫谈】【计算机系统基础学习笔记】W2-2-2 模运算系统和补码表示
  • vue概述
  • SpringCloud-OpenFeign案例实战
  • ACM - 数学 - 提高(还没学多少)
  • JavaScript class和继承的原理
  • Playwright-python 自动化测试【Anaconda】环境配置
  • 攻防世界-web-simple js
  • 【SpringCloud】初始微服务
  • 均摊时间复杂度
  • 夏驰和徐策的解决数学问题思路——反证法
  • 面向开发人员的 ChatGPT 提示词教程 - ChatGPT Prompt Engineering for Developers
  • 虹科方案|使用 HK-TRUENAS支持媒体和娱乐工作流程-1
  • DDR5内存彻底白菜价,国外大厂却整出了比着火更离谱的骚操作
  • Linux网络——Shell编程之函数
  • GQCNN+PointNetGPD思路和问题--chatGPT
  • Mysql索引(2):索引结构
  • Spring框架介绍和应用实践
  • IO 流学习总结
  • PowerToys——免费、强大、高效的微软官方效率提升工具集,办公学习宝藏软件
  • 【C++】 类基础汇总(类封装,构造、析构函数...)
  • BM61-矩阵最长递增路径
  • selenium——unittest框架
  • matlab频谱分析详解
  • 用layui写用户登录页面遇到的问题
  • NMOS双向转换电路实测以及上升沿尖峰处理