C#中下面一段代码是什么意思,麻烦详细解释一下

publicstaticbyte[]ResolveBuffer(byte[]buffern){if(buffern[0]!='6'&&buffern[1]!='8'){r... public static byte[] ResolveBuffer(byte[] buffern)
{
if (buffern[0] != '6' && buffern[1] != '8')
{
return null;
}
try
{
char[] bufferw = Encoding.ASCII.GetChars(buffern);
byte[] buffer = new byte[40];
for (int i = 0; i < 40; i++)
{
if (bufferw[i] < 97)
{
buffer[i] = Convert.ToByte(Convert.ToString(bufferw[i]));
}
else
{
buffer[i] = Convert.ToByte((int)bufferw[i] - 87);
}
}
byte[] transformedData = new byte[20];
for (int i = 0; i < 20; i++)
{
transformedData[i] = (byte)((buffer[i * 2] << 4) + buffer[i * 2 + 1]);
}
return transformedData;
}
catch (Exception)
{
return null;
}
}
}
}
展开
 我来答
黄工的控件库
2014-10-28 · TA获得超过5732个赞
知道小有建树答主
回答量:1644
采纳率:50%
帮助的人:515万
展开全部
public static byte[] ResolveBuffer(byte[] buffern)
{
if (buffern[0] != '6' && buffern[1] != '8')//buffern第一个不是6 第二个不是8
{
return null;
}
try
{
char[] bufferw = Encoding.ASCII.GetChars(buffern);//将buffern转换为char数组
byte[] buffer = new byte[40];//初始化一个40长度的数组
for (int i = 0; i < 40; i++)//循环
{
if (bufferw[i] < 97)//如果bufferw[i]对应字符的ASCII码数值小雨97
{
buffer[i] = Convert.ToByte(Convert.ToString(bufferw[i]));将这个数值转换Byte并保持
}
else
{
buffer[i] = Convert.ToByte((int)bufferw[i] - 87);否则减去87再转换为Byte 并保持 }
}
byte[] transformedData = new byte[20];初始化一个20长度的byte
for (int i = 0; i < 20; i++)
{
transformedData[i] = (byte)((buffer[i * 2] << 4) + buffer[i * 2 + 1]);//计算数值
}
return transformedData;//返回数组
}
catch (Exception)
{
return null;
}
}
}
}
lzh3452
推荐于2016-04-28 · TA获得超过1044个赞
知道小有建树答主
回答量:1168
采纳率:100%
帮助的人:858万
展开全部
这是一段解密处理,如果参数数组以68开头,则继续,否则直接返回null。
先将byte[]的值转成ascii码,小写字母a(97)以下的将ascii码保存起来,小写字母a(97)以上的将ascii码减87在保存。此处只处理参数数组的前40位元素,之后的舍弃。
最后一处for将上面得到的40个元素压缩成20个,具体是将偶数元素右移4位加上奇数元素。
我猜想第一个for得到的byte数组是扩张的BCD码,即8位的byte其实只有低4位用来保存数据,高四位为空,所以,其实两个byte保存的是一个byte的值,而第二个for就是个压缩过程,把值还原成一个byte里保存。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式