我只知道大概 是16进制解码什么吧. 里面-39 -7 和>= 49 >= 16 都什么意思啊;谢谢 c#的
private static byte[] HexDecode(string data)
{
if (data == null)
return null;
char[] arr = data.ToCharArray();
byte[] ret = new byte[arr.Length / 2];
for (int i = 0; i < arr.Length / 2; ++i)
{
byte hi = (byte)(arr[i * 2] - '0');
if (hi >= 49)
hi -= 39;
else if (hi >= 16)
hi -= 7;
byte lo = (byte)(arr[i * 2 + 1] - '0');
if (lo >= 49)
lo -= 39;
else if (lo >= 16)
lo -= 7;
ret[i] = (byte)(hi << 4 | lo);
}
return ret;
}
private static byte[] HexDecode(string data)
{
if (data == null)
return null;
char[] arr = data.ToCharArray();
byte[] ret = new byte[arr.Length / 2];
for (int i = 0; i < arr.Length / 2; ++i)
{
byte hi = (byte)(arr[i * 2] - '0');
if (hi >= 49)
hi -= 39;
else if (hi >= 16)
hi -= 7;
byte lo = (byte)(arr[i * 2 + 1] - '0');
if (lo >= 49)
lo -= 39;
else if (lo >= 16)
lo -= 7;
ret[i] = (byte)(hi << 4 | lo);
}
return ret;
}
解决方案 »
- 未将对象引用设置到对象的实例
- 如何使PowerPoint 播放时上下颠倒。或者旋转任意角度
- 在WebBrowser1_DocumentCompleted过程中,我用了三种方法都得不到下载网页内容,是怎么回事,是取得网页的方法不对吗,请指教。见代码:
- DataGridView数据输出到excell中并保存
- 如何让无边框的窗体的四个角变成圆角?
- 诚心请教!!!
- C#初学者的困惑!难解啊·······
- 如何从类中传递一个数组出去?(通过属性从类中得到一个数组?)
- C# 中怎么得到错误号
- 请问:POP3中的MIME实体到底指的是什么?
- treeView1.SelectedNode.Text 有什么办法可以让它不为空啊
- 短信 8口猫池 区分各modem的问题,望弄过的哥们进来看一眼
的意思相当于 一个char ch;
if(ch >='a');
因为 'a'-'0'==49;
else if (hi >= 16)
相当于
else if(ch >'z')
至于
hi -= 39;
hi -= 7
都好像转化为 :;= < 等符号
比如调用 HexDecode("FE4A09");
那么返回3个byte,分别为0xFE (254), 0x4A(74), 0x09(9)private static byte[] HexDecode(string data)
{
if (data == null)
return null;
char[] arr = data.ToCharArray();
byte[] ret = new byte[arr.Length / 2]; //字符串有几位,那么返回值就是一半的个数
for (int i = 0; i < arr.Length / 2; ++i)
{
byte hi = (byte)(arr[i * 2] - '0'); //取出高位,比如FE取出 F -'0' (如果这位是数字0-9,则返回0-9
if (hi >= 49) //如果这位是 a-f ,则变成 10-15
hi -= 39;
else if (hi >= 16) //如果这位是 A-F ,则变成 10-15
hi -= 7;
byte lo = (byte)(arr[i * 2 + 1] - '0'); //取出低位,比如FE则取出E ,下面同高位运算
if (lo >= 49)
lo -= 39;
else if (lo >= 16)
lo -= 7;
ret[i] = (byte)(hi < < 4 ¦ lo); //将高位左移四位加上低位,就是这个16进制对应的byte了.
}
return ret;
}
hi -= 39;
hi -= 7 我可以推导出来......但总是比较别扭;有什么有什么其他的思路,说明是要-7,-39