public static byte ToByte(bool[] bits) { #region 安全的代码 //int res = 0; //for (Int16 i = 7; i > -1; i--) //{ // if (bits[i]) // res += 1 << 7 - i; //} //return (byte)res; #endregion byte res = 0; unsafe { bool* p_res = (bool*)&res; for (int i = 0; i < 8; i++) { *p_res = bits[i]; p_res++; } } return res; }
为什么这样的代码会在for循环中越界?传入的一个长度为8的数据,在I=6的时候,数据就越界了??求指教,是不是哪里弄错了。似乎bits数据在一定时候地址变化了?
使用其他类型,浮点型,整形,然后按BYTE指针便宜还是一样的会出现越界的情况,传入的数组在一定的时候变成了一个单一的整形变量。