110,533
社区成员
发帖
与我相关
我的任务
分享
/// <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);
}
}
}