string 和 Hex之间的转换 string转化为Hex,又从Hex转化为string,请高手给下具体的代码。万分感谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 string 为 字母和数字 无汉字 /// <summary> /// Hexbin 二进制数据用ASCII字符表示 例 字符'1'的hex是0x31表示为hexbin是 '3''1' /// Hex: 二进制数据 /// </summary> public static byte[] Hexbin2Hex(string Input) { byte[] bHexbin = Encoding.ASCII.GetBytes(Input); int nLen = bHexbin.Length / 2; byte[] bHex = new byte[nLen]; for (int i = 0; i < nLen; i++) { if (bHexbin[2 * i] < 0x41) { bHex[i] = Convert.ToByte(((bHexbin[2 * i] - 0x30) << 4) & 0xf0); } else { bHex[i] = Convert.ToByte(((bHexbin[2 * i] - 0x37) << 4) & 0xf0); } if (bHexbin[2 * i + 1] < 0x41) { bHex[i] |= Convert.ToByte((bHexbin[2 * i + 1] - 0x30) & 0x0f); } else { bHex[i] |= Convert.ToByte((bHexbin[2 * i + 1] - 0x37) & 0x0f); } } return bHex; } /// <summary> /// 上一函数的逆过程 /// </summary> public static void Hex2Hexbin(byte[] bHex, byte[] bHexbin, int nLen) { byte c; for (int i = 0; i < nLen; i++) { c = Convert.ToByte((bHex[i] >> 4) & 0x0f); if (c < 0x0a) { bHexbin[2 * i] = Convert.ToByte(c + 0x30); } else { bHexbin[2 * i] = Convert.ToByte(c + 0x37); } c = Convert.ToByte(bHex[i] & 0x0f); if (c < 0x0a) { bHexbin[2 * i + 1] = Convert.ToByte(c + 0x30); } else { bHexbin[2 * i + 1] = Convert.ToByte(c + 0x37); } } } private static byte[] strToToHexByte(string hexString) { hexString = hexString.Replace(" ", ""); if ((hexString.Length % 2) != 0) hexString += " "; byte[] returnBytes = new byte[hexString.Length / 2]; for (int i = 0; i < returnBytes.Length; i++) returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16); return returnBytes; } String str = "A5"; Int64 i = Convert.ToInt64(str, 16); Console.WriteLine(Convert.ToString(i,16)); C#事务TransactionScope问题 C#如何按属性查询XML(使用XPath) web获取网站错误信息 c# 如何不用重启修改指定网络连接(网卡)的IP地址 组合物体变形问题(全部分数了) 如何利用baidu或者google的以硬盘搜索,把pdf文件转txt文本? wpf页面问题,急,谢了!! 请教下现在的vs用哪一版比较好 怎样用TCP异步收POP3邮件,要winform代码! 求教用C#开发的Web程序的copy与发布出现的问题,急~~~~!! SqlBulkCopy类的问题 使用 visual stdio 2010 鼠标选中代码进行复制或粘贴时,窗口就会不停抖动
/// <summary>
/// Hexbin 二进制数据用ASCII字符表示 例 字符'1'的hex是0x31表示为hexbin是 '3''1'
/// Hex: 二进制数据
/// </summary>
public static byte[] Hexbin2Hex(string Input)
{
byte[] bHexbin = Encoding.ASCII.GetBytes(Input);
int nLen = bHexbin.Length / 2;
byte[] bHex = new byte[nLen]; for (int i = 0; i < nLen; i++)
{
if (bHexbin[2 * i] < 0x41)
{
bHex[i] = Convert.ToByte(((bHexbin[2 * i] - 0x30) << 4) & 0xf0);
}
else
{
bHex[i] = Convert.ToByte(((bHexbin[2 * i] - 0x37) << 4) & 0xf0);
} if (bHexbin[2 * i + 1] < 0x41)
{
bHex[i] |= Convert.ToByte((bHexbin[2 * i + 1] - 0x30) & 0x0f);
}
else
{
bHex[i] |= Convert.ToByte((bHexbin[2 * i + 1] - 0x37) & 0x0f);
}
} return bHex;
} /// <summary>
/// 上一函数的逆过程
/// </summary>
public static void Hex2Hexbin(byte[] bHex, byte[] bHexbin, int nLen)
{
byte c;
for (int i = 0; i < nLen; i++)
{
c = Convert.ToByte((bHex[i] >> 4) & 0x0f);
if (c < 0x0a)
{
bHexbin[2 * i] = Convert.ToByte(c + 0x30);
}
else
{
bHexbin[2 * i] = Convert.ToByte(c + 0x37);
}
c = Convert.ToByte(bHex[i] & 0x0f);
if (c < 0x0a)
{
bHexbin[2 * i + 1] = Convert.ToByte(c + 0x30);
}
else
{
bHexbin[2 * i + 1] = Convert.ToByte(c + 0x37);
}
}
}
{
hexString = hexString.Replace(" ", "");
if ((hexString.Length % 2) != 0)
hexString += " ";
byte[] returnBytes = new byte[hexString.Length / 2];
for (int i = 0; i < returnBytes.Length; i++)
returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16);
return returnBytes;
}
String str = "A5"; Int64 i = Convert.ToInt64(str, 16);
Console.WriteLine(Convert.ToString(i,16));