标题:这个函数表示什么意思,希望得到高手解答
只看楼主
lhb62232397
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:117
专家分:546
注 册:2011-11-6
结帖率:75%
已结贴  问题点数:20 回复次数:8 
这个函数表示什么意思,希望得到高手解答
public static void CopyByte(Byte[] Dest, int start, int Source, int len)
        {
            byte[] curbyte = BitConverter.GetBytes(Source);
            byte[] turnbyte = new byte[len];
            for (int i = 0; i < len; i++)
            {
                turnbyte[len - i - 1] = curbyte[i];
            }
            Array.Copy(turnbyte, 0, Dest, start, len);
        }
搜索更多相关主题的帖子: public start 
2011-11-10 10:27
qubo1982
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:367
专家分:1132
注 册:2009-3-18
得分:10 
不管它是啥意思,这个东西写得非常有问题
(Byte[] Dest, int start, int Source, int len)这4个参数里,有2个都不应该要int start,int len
byte[] curbyte = BitConverter.GetBytes(Source);这里出来的字节集,它的length永远都是4
就算这个结果出来的维数不是固定的,也不能用len这个参数,因为在下面的循环里面,要保证curbyte和turnbyte的维数是一致的

如果你的参数len不是4的话,你想象一下会发生什么事情
            for (int i = 0; i < len; i++)
            {
                turnbyte[len - i - 1] = curbyte[i];
            }
同样的,假如你的start不是0的时候,会发生什么?
Array.Copy(turnbyte, 0, Dest, start, len);


[ 本帖最后由 qubo1982 于 2011-11-10 11:28 编辑 ]
2011-11-10 11:17
qubo1982
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:367
专家分:1132
注 册:2009-3-18
得分:10 
然后我们再来探讨一下这段代码有啥意思
byte[] curbyte = BitConverter.GetBytes(Source);//把一个数字转成一个字节集
byte[] turnbyte = new byte[len];//新建一个字节集
for (int i = 0; i < len; i++)
{
    turnbyte[len - i - 1] = curbyte[i];//整个循环,相当于把curbyte反转到turnbyte
    //curbyte[0]= turnbyte[3],curbyte[1]= turnbyte[2],curbyte[2]= turnbyte[1],curbyte[0]= turnbyte[0]
    //实在看不到这样翻转一下,有啥意思,难道是想做密码
}
Array.Copy(turnbyte, 0, Dest, start, len);
//复制内容从turnbyte到Dest
//但是不返回值,很奇怪

[ 本帖最后由 qubo1982 于 2011-11-10 11:32 编辑 ]
2011-11-10 11:25
lhb62232397
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:117
专家分:546
注 册:2011-11-6
得分:0 
回复 2楼 qubo1982
你好,谢谢你的回复。你的回答我看了,这个函数是项目里面的一个小函数。姑且不讨论整个项目,但是这个函数总想要表达一个意思实现某个功能吧,我试着拿出来单独运行,运行结果是:System.Byte[],也不知道这么回事?
2011-11-10 11:32
qubo1982
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:367
专家分:1132
注 册:2009-3-18
得分:0 
最后,这个奇怪的东西写成这样可能要好一点
程序代码:
        public static byte[] CopyByte(Byte[] Dest, int Source)
        {
            byte[] curbyte = BitConverter.GetBytes(Source);
            Dest = new byte[curbyte.Length];
            for (int i = 0; i < curbyte.Length; i++)
            {
                Dest[curbyte.Length - i - 1] = curbyte[i];
            }
            return Dest;
        } 
2011-11-10 11:34
qubo1982
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:367
专家分:1132
注 册:2009-3-18
得分:0 
以下是引用lhb62232397在2011-11-10 11:32:52的发言:

你好,谢谢你的回复。你的回答我看了,这个函数是项目里面的一个小函数。姑且不讨论整个项目,但是这个函数总想要表达一个意思实现某个功能吧,我试着拿出来单独运行,运行结果是:System.Byte[],也不知道这么回事?
...你不会用的是Dest.ToString()吧
你看它里面是用的BitConverter.GetBytes把数字转成字节集
我估计回来之后应该用BitConverter.ToInt32(Dest, 0)再把字节集转成数字
2011-11-10 11:37
qubo1982
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:367
专家分:1132
注 册:2009-3-18
得分:0 
还有,它那段代码不返回值,相当于做的事情都白做,调用它之后不会发生任何改变的
2011-11-10 11:40
lhb62232397
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:117
专家分:546
注 册:2011-11-6
得分:0 
哦。我的想法和你有点类似,那个static是我后来单独运行时加上的。我自己运行时也做了那样的修改,刚才我又按你所写的那样运行,还是出现System.Byte[],也没有显现出什么功能,还是没有看出函数有什么功能
2011-11-10 11:42
lhb62232397
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:117
专家分:546
注 册:2011-11-6
得分:0 
回复 7楼 qubo1982
我是感觉这个函数是实现某个功能。还有,这个函数是void,肯定不会返回什么特别的值。但是我们自己可以调用里面(由于函数而改变的或者是实现的)成果,你看呢
2011-11-10 11:45



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-354830-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.147127 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved