一、C#中将字节数组转换为16进制字符串
第一种方法:
.ToString("X2") 为C#中的字符串格式控制符
X为 十六进制
2为 每次都是两位数
比如 0x0A ,若没有2,就只会输出0xA
假设有两个数10和26,正常情况十六进制显示0xA、0x1A,这样看起来不整齐,为了好看,可以指定"X2",这样显示出来就是:0x0A、0x1A。
第二种方法:
Convert.ToString(st[i],16)
public static string GetMD5Value(string msg)
{
using (MD5 md5 = MD5.Create())
{
StringBuilder sb = new StringBuilder();
//字符串转换为字节数组
byte[] bts = System.Text.Encoding.UTF8.GetBytes(msg);
byte[] st = md5.ComputeHash(bts);
md5.Clear();
for (int i = 0; i < st.Length; i++)
{
//sb.Append(st[i].ToString("x2"));
//字符转换为16进制
sb.Append(Convert.ToString(st[i],16));
}
return sb.ToString();
}
}
二、进制间相互转换
//十进制转二进制 Convert.ToString(69, 2); //69为被转值 //十进制转八进制 Convert.ToString(69, 8); //69为被转值 //十进制转十六进制 Convert.ToString(69, 16); //69为被转值 //二进制转十进制 Convert.ToInt32(”100111101″, 2); //100111101为被转值 //八进制转十进制 Convert.ToInt32(”76″, 8); //76为被转值 //C# 16进制转换10进制 Convert.ToInt32(”FF”, 16); //FF为被转值
三、提取数据高8位或低8位
int CRC = 25496;
string S = Convert.ToString(CRC, 16);//转换为16进制字符串0x6398
int CrcL = CRC % 256; //低8位,取余
int CRCL = CRC & (0XFF); //取低8位,152
int CrcH = CRC / 256; //高8位,除256
int CRLH = (CRC >> 8) & 0XFF; //取高8位,99