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

C#中string与byte[]的转换帮助类-.NET教程,C#语言

2007-06-28 10:13 471 查看
在写c#程序时,string和byte[]之间的转换比较烦,在移植一些老程序时感觉很不好。我在c#中使用des和tripledes时移植一块老代码时也遇到了同样的情况。为了下次不为同样的事情烦恼,就写了下面的帮助类。


主要实现了以下的函数






代码中出现的sidle是我的网名。






/**//*


* @author wuerping


* @version 1.0


* @date 2004/11/30


* @description:


*/


using system;


using system.text;


namespace sidlehelper






{




/**//// <summary>


/// summary description for strhelper.


/// 命名缩写:


/// str: unicode string


/// arr: unicode array


/// hex: 二进制数据


/// hexbin: 二进制数据用ascii字符表示 例 字符1的hex是0x31表示为hexbin是 31


/// asc: ascii


/// uni: unicode


/// </summary>


public sealed class strhelper






{




hex与hexbin的转换#region hex与hexbin的转换


public static void hexbin2hex(byte[] bhexbin, byte[] bhex, int nlen)






{


for(int i=0; i<nlen/2; 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);


}


}


}


public static byte[] hexbin2hex(byte[] bhexbin, int nlen)






{


if(nlen%2 !=0)


return null;


byte[] bhex = new byte[nlen/2];


hexbin2hex(bhexbin, bhex, nlen);


return bhex;


}


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);


}


}


}


public static byte[] hex2hexbin(byte[] bhex, int nlen)






{


byte[] bhexbin = new byte[nlen*2];


hex2hexbin(bhex, bhexbin, nlen);


return bhexbin;


}


#endregion






数组和字符串之间的转化#region 数组和字符串之间的转化


public static byte[] str2arr(string s)






{


return (new unicodeencoding()).getbytes(s);


}


public static string arr2str(byte[] buffer)






{


return (new unicodeencoding()).getstring(buffer, 0, buffer.length);


}




public static byte[] str2ascarr(string s)






{


return system.text.unicodeencoding.convert(system.text.encoding.unicode,


system.text.encoding.ascii,


str2arr(s));


}




public static byte[] str2hexascarr(string s)






{


byte[] hex = str2ascarr(s);


byte[] hexbin = hex2hexbin(hex, hex.length);


return hexbin;


}


public static string ascarr2str(byte[] b)






{


return system.text.unicodeencoding.unicode.getstring(


system.text.asciiencoding.convert(system.text.encoding.ascii,


system.text.encoding.unicode,


b)


);


}




public static string hexascarr2str(byte[] buffer)






{


byte[] b = hex2hexbin(buffer, buffer.length);


return ascarr2str(b);


}


#endregion


}


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