说说byte和byte [],以及字节数组的转换
byte 关键字代表一种整型,该类型按下表所示存储值:
类型 | 范围 | 大小 | .NET Framework 类型 |
---|---|---|---|
byte | 0 到 255 | 无符号 8 位整数 | System.Byte |
标识符
可如下例所示声明并初始化 byte 类型的变量:
![]() | |
---|---|
byte myByte = 255; |
在以上声明中,整数 255
从 int 隐式转换为 byte。如果整数超出了 byte 的范围,将产生编译错误。
到底什么是字节数组呢?难道就是字节组成的集合??我找了一些资料,不过都没有直接说明字节数组的概念。我的印象是:SqlServer中的binary和image类型,在C#中对应byte [],另外我在学习Socket的时候,两个套接字之间发送的好像也是byte []。以前老师的教程上是这样将字符串和数组之间转换的。
{
return System.Text.Encoding.BigEndianUnicode.GetString(arrByte);
}
public byte [] ConvertStringToBytes( string value)
{
return System.Text.Encoding.BigEndianUnicode.GetBytes(value.ToCharArray());
}
1、 将字节数组转化为数值
public static int ConvertBytesToInt(byte[] arrByte, int offset)
{
return BitConverter.ToInt32(arrByte, offset);
}
2、 将数值转化为字节数组
第二个参数设置是不是需要把得到的字节数组反转,因为Windows操作系统中整形的高低位是反转转之后保存的。
public static byte[] ConvertIntToBytes(int value, bool reverse)
{
byte[] ret = BitConverter.GetBytes(value);
if (reverse)
Array.Reverse(ret);
return ret;
}
3、 将字节数组转化为16进制字符串
第二个参数的含义同上。
public static string ConvertBytesToHex(byte[] arrByte, bool reverse)
{
StringBuilder sb = new StringBuilder();
if (reverse)
Array.Reverse(arrByte);
foreach (byte b in arrByte)
sb.AppendFormat("{0:x2}", b);
return sb.ToString();
}
public static byte[] ConvertHexToBytes( string value)
{
int len = value.Length / 2;
byte[] ret = new byte[len];
for ( int i = 0; i < len; i++)
ret[i]=( byte)( Convert.ToInt32(value.Substring(i * 2, 2), 16));
return ret;
}