字节数组与字符串(字符数组)的转换操作
2014-09-17 01:02
357 查看
1、默认编码方式转换:
(1)string(char[])转换为byte[]
(2)byte[]转换为string(char[])
2、其他编码方式转换
将上述Default更换为ASCII、Unicode、UTF8、UTF7、UTF32等编码方式,然后调用对应方法就可以转换。
3、Byte[]中的十六进制转换为十六进制字符串
4、十六进制字符串转换为Byte数组
(1)string(char[])转换为byte[]
byte[] byteArr = System.Text.Encoding.Default.GetBytes(char[]); byte[] byteArr = System.Text.Encoding.Default.GetBytes(string); byte[] byteArr = System.Text.Encoding.Default.GetBytes(char[], startindex, count); int count = System.Text.Encoding.Default.GetBytes(char * , count, byte*, startindex); int count = System.Text.Encoding.Default.GetBytes(char[] , startindex, count, byte[], startindex); int count = System.Text.Encoding.Default.GetBytes(s , startindex, count, byte[], startindex);
(2)byte[]转换为string(char[])
string str = System.Text.Encoding.Default.GetString ( byteArray ); string str = System.Text.Encoding.Default.GetString ( byteArray, startindex, count );GetString方法和GetChar方法类似,后者将字节数组转换为对应的字符数组。
2、其他编码方式转换
将上述Default更换为ASCII、Unicode、UTF8、UTF7、UTF32等编码方式,然后调用对应方法就可以转换。
string str = "01"; byte[] byteArr = System.Text.Encoding.ASCI.GetBytes(str);上述代码得到byteArr = {0x30, 0x31},这就是0和1的ASCI编码值。
byte[] byteArr = new byte[]{0x4e, 0x01}; string a = System.Text.Encoding.BigEndianUnicode.GetString(byteArr);上述代码将unicode编码的第二个汉字“丁”解码赋值给变量a,“丁”的unicode码为\u4e01。
3、Byte[]中的十六进制转换为十六进制字符串
public static string ToHexString ( byte[] bytes ) { string hexString = string.Empty; if ( bytes != null ) { StringBuilder strB = new StringBuilder (); for ( int i = 0; i < bytes.Length; i++ ) { strB.Append ( bytes[i].ToString ( "X2" ) ); } hexString = strB.ToString (); } return hexString; }
4、十六进制字符串转换为Byte数组
public static byte[] GetBytes(string hexString, out int discarded) { discarded = 0; string newString = ""; char c; // remove all none A-F, 0-9, characters for (int i=0; i<hexstring.length; i++) { c = hexString[i]; if (IsHexDigit(c)) newString += c; else discarded++; } // if odd number of characters, discard last character if (newString.Length % 2 != 0) { discarded++; newString = newString.Substring(0, newString.Length-1); } int byteLength = newString.Length / 2; byte[] bytes = new byte[byteLength]; string hex; int j = 0; for (int i=0; i<bytes.length; i++) { hex = new String(new Char[] {newString[j], newString[j+1]}); bytes[i] = HexToByte(hex); j = j+2; } return bytes; }对于获取到的使用unicode编码的网页或者其他文件,可以使用上述方法将加密后的unicode编码字符串转换为byte数组,然后再使用前面提到的转换方法转换为对应的字符。
相关文章推荐
- 字节数组 整型 字符串 十六进制 字符 之间的转换
- 字符串与字节数组 字符数组的转换
- Java整数-字节,字节-字符,字节数组-十六进制字符串转换
- 管道流PipedInputStream,PipedInputStream、操作(字节数组,字符数组,字符串)流
- 主题:Java整数-字节,字节-字符,字节数组-十六进制字符串转换
- Java整数-字节,字节-字符,字节数组-十六进制字符串转换
- IP字符串转换成4字节无符号字符数组[转]
- 将字节数组转换为十六进制值字符串时 Byte 的用法
- 字符串 To 字节数组 的转换
- 字节数组、数值和十六进制字符串的转换
- 16进制字符串与字节数组相互转换
- 字符数组与字符串间的转换
- 字节、字符串、字节数组之间的相互转换
- 字符数组转换字符串,字符串数组转换为字符串的问题
- Delphi字符串、PChar与字符数组之间的转换
- MSDN将字节数组转换为十六进制值字符串时 Byte 的用法
- [转]字符串和字符数组之间的转换
- 用VB.NET将字节数组转换为字符串
- C# 16进制与字符串、字节数组之间的转换
- asp.net(c#)字符串转换成字符数组 字符串转换成int 数组