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

///<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);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值