关于C#:字符串到字节[],不编码或更改字符串处的实际字节

string to byte[] without encoding or changing actual bytes at string

下面是我byte[]P></

1
0C 00 21 08 01 00 00 00 86 1B 06 00 54 51 53 65 72 76 65 72

我可以用bitconverter BitConverter.ToStringconvert it toP></

1
0C-00-21-08-01-00-00-00-86-1B-06-00-54-51-53-65-72-76-65-72

如何从字符串的byte[]回来convert to get toP></

1
0C 00 21 08 01 00 00 00 86 1B 06 00 54 51 53 65 72 76 65 72

ASCII编码方法总是让我和其他等效字节字符串but the to the need is the我真的字节数组字符串to be en is as if,知道我在reversing operation(然后使用GetBytes toString)三端拨号字符串with the same about is but我亲爱的AT GetBytes while to get the精确的字节P></

当我说P></

to putP></

1
0C-00-21-08-01-00-00-00-86-1B-06-00-54-51-53-65-72-76-65-72

stringasP></

和getP></

1
0C 00 21 08 01 00 00 00 86 1B 06 00 54 51 53 65 72 76 65 72

byte[]asP></

谢谢提前P></


你需要这个

1
byte[] bytes = str.Split('-').Select(s => Convert.ToByte(s, 16)).ToArray();


可以在System.Runtime.Remoting.Metadata.W3cXsd2001命名空间中使用SoapHexBinary

1
2
string s ="0C-00-21-08-01-00-00-00-86-1B-06-00-54-51-53-65-72-76-65-72";
byte[] buf  = SoapHexBinary.Parse(s.Replace("-","")).Value;


记住bitconverter.toString返回等效的十六进制字符串表示,因此如果您决定继续使用它,请按以下方式转换:

1
2
string temp = BitConverter.ToString(buf);//buf is your array.
byte[] newbuf = temp.Split('-').Select(s => Convert.ToByte(s,16)).ToArray();

但将字节转换成字符串和返回字符串的最安全方法是base64:

1
2
string str = Convert.ToBase64String(buf);
byte[] result = Convert.FromBase64String(str);