至少可以通过三种方法来进行转换。

在.NET Framework类库的System名字空间中有个叫做BitConverter的类,它是专门用来进行这种转换的。

很简单的一种方法:int i=100; byte[] result = BitConverter.GetBytes(i);

它有一个GetBytes方法,对于大多数简单的类型来说,该方法都被重载了,它可以返回一个byte array来保存你传递的值。它也有几个ToTypeName方法用来将一个byte array转换成一个基本类型(primitive type):byte[] b = BitConverter.GetBytes(
 <wbr> <wbr> 0xba5eba11 );<br>//{0x11,0xba,0x5e,0xba}<br>uint u = BitConverter.ToUInt32(<br> <wbr> <wbr> new byte[] {0xfe, 0x5a, 0x11,<br> <wbr> <wbr> 0xfa},0 ); // 0xfa115afe</wbr></wbr></wbr></wbr></wbr></wbr>

在运用BitConverter类时,要记住的一个重点是它的行为取决于硬件架构(代码在该硬件架构上运行)的字节顺序(endianness)——就是说,integer字节在内存中的存储顺序。如果你将bit保存为可以在许多不同平台上读取的一个文件格式,那么就会出问题。BitConverter有一个公有的IsLittleEndian字段,你可以查看它是如何运行的,但遗憾的是,你并不能改变它。

也可以不用BitConverter类,而通过手动位移(bit shifting)来进行转换: b = new byte[] {0xfe,0x5a,0x11,0xfa};
u = (uint)(b[0] | b[1] << 8 |
 <wbr> <wbr> b[2] &lt;&lt; 16 | b[3] &lt;&lt; 24);<br>b[0] = (byte)(u);<br>b[1] = (byte)(u &gt;&gt; 8);<br>b[2] = (byte)(u &gt;&gt; 16);<br>b[3] = (byte)(u &gt;&gt; 24);<br><br>用这种方法就可以避免字节顺序问题,因为可以完全控制字节的位置。</wbr></wbr>

最后——如果不介意用不安全的代码——可以通过直接的内存拷贝来实现转换,把一个指向byte array的指针(pointer)转换成一个指向integer类型的指针,然后取它的值(dereference):unsafe {
 <wbr> <wbr> fixed ( byte* pb = b )<br> <wbr> <wbr> u = *((uint*)pb);<br>}</wbr></wbr></wbr></wbr>

同BitConverter一样,这个方法的运行结果取决于代码在何种硬件上运行。

如果要进行很多这种转换——比如说在一个循环中——而且想得到最佳性能,那么建议用最后两种方法中的一种。BitConverter有些慢,尽管区别不大

c# int byte转相关推荐

  1. java int byte数组_Java 中int与byte数组转换详解

    1.与运算符的理解(&): 参加运算的两个数据,按二进位进行"与"运算.如果两个相应的二进位都为1,则该位的结果值为1,否则为0.即 0&0=0:0&1=0 ...

  2. kotlin中Int Byte的相互转换,常用

    串口通信中传输单位为byte,一个byte占用八位/8bit 常用的方法 1.一个Int转成一个byte 直接调用Int.toByte()方法 看如下直接转换 var num = 23var num2 ...

  3. 金现代面试题—— i++,++i, ,|自动装箱和自动拆箱(int,byte,float等)|取int等基本类型的最大值

    本文目录 1.看程序运行,算运行结果 2.问答--解释一下自动装箱和自动拆箱 3.对byte,short,float.double 进行自动装箱和自动拆箱 4.通过封装类获取其基本类型的最大值 本文目 ...

  4. c语言byte数组转为int,byte转int 0xFF

    参考文档 https://www.cnblogs.com/think-in-java/p/5527389.html "好比我们拿到的文件流转成byte数组,难道我们关心的是byte数组的十进 ...

  5. java中byte数组与int类型的转换(两种方式)

    java中byte数组与int类型的转换,在网络编程中这个算法是最基本的算法,我们都知道,在socket传输中,发送.者接收的数据都是 byte数组,但是int类型是4个byte组成的,如何把一个整形 ...

  6. java类型转换 byte转int

    转换思路 1.存储大小:int是32位,byte是8位,所以要用4个byte转储 示例: byte[0] 记录 8-1位: byte[1] 记录 16-9位: byte[2] 记录 24-17位: b ...

  7. Java中byte[]数组和int之间的转换

    在最近的项目中需要用到byte[]和int互转,找了一些资料选了其中感觉蛮不错的一种解决方法记录一下. 转自:http://blog.csdn.net/sunnyfans/article/detail ...

  8. Golang实现的[]byte和int转化

    前几天写计网的项目用了Golang,中间有一步需要把字节和int相互转化,自己写了一个转换函数,用Golang自带的 binary.LittleEndian 库实现,int转byte的数组以小端形式存 ...

  9. int long java_java long int的区别

    java long int的区别 java中long和int都属于整型,为什么还要细分为long和int两种数据类型呢?这是因为它们代表的大小不一样.具体区别如下: 1.区别1 16位系统:long是 ...

最新文章

  1. 对接kafka_flume对接kafka多路径同时收集日志,配置怎么写?
  2. 【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 获取注入的 libbridge.so 动态库中的 load 函数地址 并 通过 远程调用 执行该函数 )
  3. 机器学习cae_CAE工程分析技术年会记
  4. jQuery 常用方法总结
  5. linux top交叉编译_ARM Linux交叉编译工具链的制作
  6. 一步步编写操作系统 61 任务状态段 TSS
  7. c++ array容器 传参_C++ 顺序容器基础知识总结
  8. linux命令行安装vnc_CentOS下安装VNC并设置远程服务
  9. Adaboost算法的学习笔记~
  10. 美国国家标准技术局发布应用容器安全指南
  11. 修改k8s的集群域名后缀
  12. 利用ViewItems来管理我们ListView项之间的drag-and-drog
  13. DIY兼容机装苹果系统
  14. GD32官方固件库(标准外设库)下载
  15. 怎么添加扫描仪到计算机快捷键,Win7系统添加扫描仪快捷方式的方法
  16. 畜生,想你了*_*发信站: BBS 哈工大紫丁香站
  17. 网络基础知识 | 协议 | TCP/IP分层模型
  18. Android全屏的三种方式
  19. SU插件情报局 | CleanUp3 清理大师
  20. 2023美团商家数据

热门文章

  1. 11(AtCoder-2649)
  2. LSI最长递增子序列(DP问题)
  3. mysql语法中的join_MySQL JOIN 语法说明与 图解
  4. 为什么做了梦第二天想不起来_转告父母!为什么有人睡觉爱把脚伸到被子外面?其实与身体状况有关…切勿忽视...
  5. 机器学习--Lasso回归(LassoRegression)
  6. libpng warning: iCCP: known incorrect sRGB profile
  7. Self-Supervised Learning 入门介绍
  8. [Matlab] 传入 dsolve 的方程组必须是行向量才能求解
  9. 【如意影视】运营级+完整类库+解析线路+无限增加或删减解析接口+如意可视化播放器1.1
  10. js一个按钮弹出两个按钮_车内常见按钮,你却一个不认识?一分钟带你认识车内常见按钮...