byte[]转ushort[]
时间: 2025-03-08 11:04:09 浏览: 10
将 byte
数组转换为 ushort
数组
在 C# 中,可以通过使用 BitConverter
类来实现将 byte
数组转换为 ushort
数组的操作。由于 BitConverter
的方法返回的是基本数据类型而不是数组形式的结果,因此需要编写额外逻辑处理整个输入的 byte
数组。
对于每两个连续的字节,可以调用一次 BitConverter.ToUInt16()
方法将其转化为一个无符号短整型 (ushort
) 值[^2]。考虑到不同平台上的字节顺序可能不一致,在某些情况下还需要反转字节数组中的元素位置以匹配目标系统的字节序[^3]。
下面是一个完整的例子展示如何完成此操作:
using System;
class Program {
static void Main() {
// 示例:给定的一个偶数长度的字节数组
byte[] byteArray = new byte[]{0x78, 0x56, 0x34, 0x12};
// 创建一个新的 ushort 数组用于保存结果
ushort[] ushortArray = new ushort[byteArray.Length / sizeof(ushort)];
// 遍历并分批读取每两个字节作为单个 ushort 元素存入新创建的数组中
for(int i=0; i<byteArray.Length/sizeof(ushort); ++i){
// 如果当前环境采用大端模式,则需先翻转这两个字节再进行转化
if(BitConverter.IsLittleEndian){
Array.Reverse(byteArray, i*2, 2);
}
ushort value = BitConverter.ToUInt16(byteArray, i * 2);
// 存储转换后的值到新的 ushort 数组里
ushortArray[i] = value;
}
foreach(var item in ushortArray){
Console.WriteLine(item.ToString("X")); // 输出十六进制表示法下的数值
}
}
}
这段程序会遍历传入的 byte
数组,并每次取出相邻的一对字节通过 BitConverter.ToUInt16()
函数解析成相应的 ushort
值。如果运行该代码所在的计算机是以小端方式存储多字节数值的话(即最低有效位位于地址较低的位置),那么就需要利用 Array.Reverse()
来调整这两位字节之间的相对次序以便得到正确的解释结果。
阅读全文
相关推荐


















