把int型数组转换为byte时出现的问题

来源:百度知道 编辑:UC知道 时间:2024/06/24 10:44:53
int [] my = {143, 232, 23, 454, 587, 667, 734, 434};
byte[] bytee = { 0, 0, 0, 0, 0, 0, 0, 0 };
for (int i = 0; i < 8; i++)
{
bytee[i] = Convert.ToByte(my[i]);
Console.Write(bytee[i] + " ");
}
运行结果为143 232 2。
错误提示是值对于无符号的字节太大或太小。
请问怎么回事?

BYTE类型的大小为0至255
你后面的全部都超出大小了

/// <summary>
/// int 向 byte 转换
/// </summary>
/// <param name="a">源值</param>
/// <param name="buf">目标byte</param>
/// <param name="offset">开始位置,一般为0</param>
private static void IntToByte(int a, byte[] buf, int offset)
{
buf[offset + 3] = (byte)a;
a >>= 8;
buf[offset + 2] = (byte)a;
a >>= 8;
buf[offset + 1] = (byte)a;
a >>= 8;
buf[offset + 0] = (byte)a;
}