您的位置:首页 > 编程语言 > C#

C# 16进制与字符串、字节数组之间的转换

2017-09-28 09:44 621 查看
///<summary>

/// 字符串转16进制字节数组

///</summary>

///<param name="hexString"></param>

///<returns></returns>

privatestaticbyte[] strToToHexByte(string hexString) 



hexString = hexString.Replace("","");

if ((hexString.Length%2)!=0)

hexString +="";

byte[] returnBytes=newbyte[hexString.Length/2];

for (int i =0; i< returnBytes.Length; i++)

returnBytes[i] = Convert.ToByte(hexString.Substring(i*2,2),16);

return returnBytes;



///<summary>

/// 字节数组转16进制字符串

///</summary>

///<param name="bytes"></param>

///<returns></returns>

publicstaticstring byteToHexStr(byte[] bytes) 



string returnStr="";

if (bytes!=null)



for (int i =0; i< bytes.Length; i++)



returnStr += bytes[i].ToString("X2");





return returnStr;



///<summary>

/// 从汉字转换到16进制

///</summary>

///<param name="s"></param>

///<param name="charset">编码,如"utf-8","gb2312"</param>

///<param name="fenge">是否每字符用逗号分隔</param>

///<returns></returns>

publicstaticstring ToHex(string s, string charset,bool fenge)



if ((s.Length%2)!=0)



s +="";//空格

//throw new ArgumentException("s is not valid chinese string!"); 

}

System.Text.Encoding chs = System.Text.Encoding.GetEncoding(charset);

byte[] bytes= chs.GetBytes(s);

string str="";

for (int i =0; i< bytes.Length; i++)



str +=string.Format("{0:X}", bytes[i]); 

if (fenge&& (i!= bytes.Length-1))



str +=string.Format("{0}",",");





return str.ToLower();



///<summary>

/// 从16进制转换成汉字

///</summary>

///<param name="hex"></param>

///<param name="charset">编码,如"utf-8","gb2312"</param>

///<returns></returns>

publicstaticstring UnHex(string hex, string charset)



if (hex==null)

thrownew ArgumentNullException("hex");

hex = hex.Replace(",","");

hex = hex.Replace("\n","");

hex = hex.Replace("\\","");

hex = hex.Replace("","");

if (hex.Length%2!=0)



hex +="20";//空格

}

// 需要将 hex 转换成 byte 数组。

byte[] bytes =newbyte[hex.Length/2];

for (int i =0; i< bytes.Length; i++)



try



// 每两个字符是一个 byte。

bytes[i]=byte.Parse(hex.Substring(i*2,2),

System.Globalization.NumberStyles.HexNumber); 



catch



// Rethrow an exception with custom message. 

thrownew ArgumentException("hex is not a valid hex number!","hex");





System.Text.Encoding chs = System.Text.Encoding.GetEncoding(charset);

return chs.GetString(bytes);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: