首页 新闻 赞助 找找看

C#里面使用不安全代码的疑问

0
悬赏园豆:30 [已关闭问题] 关闭于 2014-06-06 10:49
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指针便宜还是一样的会出现越界的情况,传入的数组在一定的时候变成了一个单一的整形变量。

问题补充:

大芝麻的主页 大芝麻 | 初学一级 | 园豆:4
提问于:2014-04-27 18:50
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册