C# 源数组长度不足。请检查 srcIndex 和长度以及数组的下限。

cookie燕子 2014-01-15 10:13:17
string strConn = "Data Source=127.0.0.1;Initial Catalog=zy;User ID=sa;Password=229107my229107m";
SqlConnection ConnAcc = new SqlConnection(strConn);
string strSQL = "SELECT * FROM Group_SGK3 ";
SqlDataAdapter de = new SqlDataAdapter(strSQL, ConnMdb);
try
{
//da.Fill(dt);
dtData.Clear();
de.Fill(dtData);

}
catch
{
break;
}
for (int n = 0; n < 7; n++)
{
int GK;
foreach (DataRow rdr in dtData.Rows)
{

int SGK = Convert.ToInt32(rdr["SGK"]);
GK = SGK << n;


if (Convert.ToBoolean(rdr["state1"]))
{


byte[] gk = new byte[8];
Array.Copy(HexStrToHexBytes(GK.ToString()), 0, gk, 7, 1);
Array.Copy(HexStrToHexBytes(dr["pdk"].ToString()), 0, pdk, 7, 1);// pdk buf: 0,0,0,0,0,0,0,0xcd
;
SKeyValue = SKeyValue1;
byte[] EncryptSk = EncryptDES(SKeyValue, gk);


EDS[6] = 0x01;
Array.Copy(EncryptSk, 0, EDS, 7, EncryptSk.Length);
//Thread.Sleep(5);
}
else
{


请问: Array.Copy(HexStrToHexBytes(GK.ToString()), 0, gk, 7, 1);这行提示错误说“源数组长度不足。请检查 srcIndex 和长度以及数组的下限。”这是怎么回事呢?应该怎么改?请各位大师指点!
...全文
159 点赞 收藏 6
写回复
6 条回复
cookie燕子 2014年01月15日
我的GK是通过SGK移位得来的,SGK在数据库中是int型,值为1,这个有8字节吗?我是初学者,不是太懂。。
回复 点赞
HexStrToHexBytes(GK.ToString())返回了什么,有没有8个字节?
回复 点赞
引用 2 楼 u013470910 的回复:
我的GK是通过SGK移位得来的,SGK在数据库中是int型,值为1,这个有8字节吗?我是初学者,不是太懂。。
如果你的数组只有5个字节(比如说),你让array.copy从第8个字节开始拷贝一个字节,那显然出错。
回复 点赞
cookie燕子 2014年01月15日
那我在数据库中设置成11,这样HexStrToHexBytes(GK.ToString())就有8字节了吗?就不会出错是吗?
回复 点赞
Regan-lin 2014年01月15日
引用 2 楼 u013470910 的回复:
我的GK是通过SGK移位得来的,SGK在数据库中是int型,值为1,这个有8字节吗?我是初学者,不是太懂。。
值为1这怎么够字节啊,int是占4个字节的
回复 点赞
F546445693 2014年01月15日
对于这种问题,自己单步调试下就可以出来了! 长度不足,肯定是数组超出了。for已经写死了7个长,看看你数据有没有这么长就知道了,最好根据你数据长来for循环,别写死。
回复 点赞
发动态
发帖子
C#
创建于2007-09-28

8.4w+

社区成员

64.0w+

社区内容

.NET技术 C#
社区公告
暂无公告