十六进制也字节数组转换问题,我想知道原理是怎么样的

king2003 2008-10-21 03:31:11
public static byte[] HexStringToByteArray(string s)
{
Byte[] buf = new byte[s.Length / 2];
for (int i = 0; i < buf.Length; i++)
{
buf[i] = (byte)(chr2hex(s.Substring(i * 2, 1)) * 0x10 + chr2hex(s.Substring(i * 2 + 1, 1)));
}

return buf;
}
private static byte chr2hex(string chr)
{
switch (chr)
{
case "0":
return 0x00;
case "1":
return 0x01;
case "2":
return 0x02;
case "3":
return 0x03;
case "4":
return 0x04;
case "5":
return 0x05;
case "6":
return 0x06;
case "7":
return 0x07;
case "8":
return 0x08;
case "9":
return 0x09;
case "A":
return 0x0a;
case "B":
return 0x0b;
case "C":
return 0x0c;
case "D":
return 0x0d;
case "E":
return 0x0e;
case "F":
return 0x0f;
}
return 0x00;
}

buf[i] = (byte)(chr2hex(s.Substring(i * 2, 1)) * 0x10 + chr2hex(s.Substring(i * 2 + 1, 1)));
不明白这句话是什么意思,谁能解释一下越通俗越好,谢谢
...全文
155 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
qshzf 2008-10-22
  • 打赏
  • 举报
回复
up
Crazy_Xia 2008-10-21
  • 打赏
  • 举报
回复
16进制一位换成2进制是4位,当然是2位16进制一字节了
楼主要补下基础啊
king2003 2008-10-21
  • 打赏
  • 举报
回复
没有人能解释清楚吗?
king2003 2008-10-21
  • 打赏
  • 举报
回复
不懂
abcyzq 2008-10-21
  • 打赏
  • 举报
回复
顶!
Crazy_Xia 2008-10-21
  • 打赏
  • 举报
回复
Hex 文件:
0F A4 8B CC...

2位2位取出来-〉第一次去出来的是0F
第一个0是高位,所以要* 0x10
king2003 2008-10-21
  • 打赏
  • 举报
回复
不是汉字
HexStringToByteArray
十六进制转字节数组
wheeler 2008-10-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 king2003 的回复:]
啥叫2位2位取出来
[/Quote]

0xXX XX不就是string2位嘛
怫悰 2008-10-21
  • 打赏
  • 举报
回复
冒泡帮顶接分

类库里没有现成的函数方法么?
renjnet 2008-10-21
  • 打赏
  • 举报
回复
是处理汉字的吧,1个汉字就是2个字节,其他英文字符是一个字一个字节
king2003 2008-10-21
  • 打赏
  • 举报
回复
我的意思是说为什么要把两个合成一个字节来处理
king2003 2008-10-21
  • 打赏
  • 举报
回复
啥叫2位2位取出来
Red_angelX 2008-10-21
  • 打赏
  • 举报
回复
2位2位取出来转成hex

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧