C#中string与byte[]的转换帮助类-.NET教程,C#语言
2024-07-10 13:22:19
供稿:网友
 
  
主要实现了以下的函数  
代码中出现的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  
}  
}