byte[] byt=new byte[]{0x7e,0xff,0x7e,0xaa,0x14,0x00,0x00,0x00,0x62};
现有一byte数组如上。因一软件的需要,我需要先把该数组转换为一个字符串,然后再将该字符串转换为byte数组,使用如下方法:string str=Encoding.XXX.GetString(byt);//先转换为字符串
byte[] byt1=Encoding.XXX.GetBytes(str);//在另外某一个地方再转换为byte数组(XXX表示字符编码集)
现在就是发现一个问题,转换过程中发生了“变异”:byt1数组中的内容和byt数组中的内容不相同,XXX字符编码集使用了Unicode、UTF7、UTF8、UTF32、ASCII、DefaultXXX等,都测试了一遍,没有一个原封不动地转换回去了的!!请问各位朋友,这是怎么回事捏???要怎么处理才能让byt1和byt两数组中的内容一模一样?????
谢谢!
现有一byte数组如上。因一软件的需要,我需要先把该数组转换为一个字符串,然后再将该字符串转换为byte数组,使用如下方法:string str=Encoding.XXX.GetString(byt);//先转换为字符串
byte[] byt1=Encoding.XXX.GetBytes(str);//在另外某一个地方再转换为byte数组(XXX表示字符编码集)
现在就是发现一个问题,转换过程中发生了“变异”:byt1数组中的内容和byt数组中的内容不相同,XXX字符编码集使用了Unicode、UTF7、UTF8、UTF32、ASCII、DefaultXXX等,都测试了一遍,没有一个原封不动地转换回去了的!!请问各位朋友,这是怎么回事捏???要怎么处理才能让byt1和byt两数组中的内容一模一样?????
谢谢!
byte[] byt = new byte[] { 0x7e, 0xff, 0x7e, 0xaa, 0x14, 0x00, 0x00, 0x00, 0x62 };
string str = BitConverter.ToString(byt); // string -> byte[]
string[] arr = str.Split('-');
List<byte> list = new List<byte>();
foreach (string s in arr)
{
byte b = byte.Parse(s, System.Globalization.NumberStyles.AllowHexSpecifier);
list.Add(b);
}
byte[] newbyt = list.ToArray();
public static byte[] HexStringToByteArray(string s)
{
s = s.Replace(" ", "");
byte[] buffer = new byte[s.Length / 2];
for (int i = 0; i < s.Length; i += 2)
buffer[i / 2] = (byte)Convert.ToByte(s.Substring(i, 2), 16);
return buffer;
}
//数组转化为16进制字符串
public static string ByteArrayToHexString(byte[] data)
{
StringBuilder sb = new StringBuilder(data.Length * 3);
foreach (byte b in data)
sb.Append(Convert.ToString(b, 16).PadLeft(2, '0').PadRight(3, ' '));
return sb.ToString().ToUpper();
}
bytes=convert.frombase64string(str)
string str= System.Text.Encoding.ASCII.GetString(byt);
var bytes = System.Text.Encoding.ASCII.GetBytes(str);
因为ASCII编码只需要一个字节而其它的编码需要2个字节以上
byte[] sendBuffer = System.Text.Encoding.GetEncoding("GB2312").GetBytes(senstr);//BYTE转回汉字
string rec = System.Text.Encoding.GetEncoding("GB2312").GetString(recBuffer, 0, recBuffer.Length).Replace("\0","");