/// <summary> /// 字符串转换成16进制 /// </summary> /// <param name="inString"></param> /// <param name="hex"></param> /// <returns></returns> public string StringTo16(string inString, EnumHex hex) { string outString = string.Empty; byte[] bytes = Encoding.Default.GetBytes(inString); for (int i = 0; i < bytes.Length; i++) { int strInt = Convert.ToInt16(bytes[i] - '\0'); string s = strInt.ToString("X");//ToString("X")是将数字转换为16进制字符串 if (s.Length == 1) { s = "0" + s; } s = s + AddSplitString(hex); outString += s; } return(outString); }
/// <summary> /// /// </summary> /// <param name=""></param> /// <param name="hex"></param> /// <returns></returns> public string BytesTo16(byte[] bytes, EnumHex hex) { string outString = string.Empty; for (int i = 0; i < bytes.Length; i++) { // 16进制数为一位时前面填充0 如果是一位的(0xA),此时为了对齐在数据前面加一个字符"0"(0x0A) if (bytes[i].ToString("X").Length < 2) { //转成16进制数 outString += "0" + bytes[i].ToString("X") + AddSplitString(hex); } else { //转成16进制数据 outString += bytes[i].ToString("X") + AddSplitString(hex); } } return(outString); }
/// <summary> /// 把16进制隔离符转换成实际的字符串 /// </summary> /// <param name="hex">16进制隔离符枚举</param> /// <returns></returns> private string AddSplitString(EnumHex hex) { switch (hex) { case EnumHex.None: return(""); case EnumHex.Blank: return(" "); case EnumHex.OX: return("OX"); case EnumHex.Ox: return("Ox"); default: return(""); } }
/// <summary> /// 把byte[]直接转换成字符串,直接以2进制形式显示出来 /// </summary> /// <param name="bytes"></param> /// <param name="hex"></param> /// <returns></returns> public string BytesTo2String(byte[] bytes, EnumHex hex) { string outSting = ""; for (int i = 0; i < bytes.Length; i++) { string tempString = Convert.ToString(bytes[i], 2); if (tempString.Length != 8) { string add0 = string.Empty; for (int j = 0; j < 8 - tempString.Length; j++) { add0 += "0"; } tempString += add0 + tempString + AddSplitString(hex); } else { outSting += tempString + AddSplitString(hex); } } return(outSting); }
/// <summary> /// 把byte[]转换成String /// </summary> /// <param name="bytes">需要转换的byte[]</param> /// <param name="hex">隔离符</param> /// <returns></returns> public string BytesToString(byte[] bytes, EnumHex hex) { return(From16ToString(BytesTo16(bytes, hex))); }