如何转换string为byte[]在.NET(C#),而无需手动指定一个特定的编码?
string
byte[]
我将对字符串进行加密。我可以加密而不进行转换,但是我仍然想知道为什么编码在这里起作用。
另外,为什么还要考虑编码?我不能简单地获取字符串存储在哪个字节中?为什么要依赖字符编码?
就像您提到的那样,您的目标很简单,就是 “获取字符串存储在哪个字节中” 。 (并且,当然,能够从字节中重建字符串。)
只需这样做:
static byte[] GetBytes(string str) { byte[] bytes = new byte[str.Length * sizeof(char)]; System.Buffer.BlockCopy(str.ToCharArray(), 0, bytes, 0, bytes.Length); return bytes; } // Do NOT use on arbitrary bytes; only use on GetBytes's output on the SAME system static string GetString(byte[] bytes) { char[] chars = new char[bytes.Length / sizeof(char)]; System.Buffer.BlockCopy(bytes, 0, chars, 0, bytes.Length); return new string(chars); }
只要您的程序(或其他程序)不尝试以某种方式 解释 字节(您显然没有提到您打算这样做),那么这种方法就 没有 错!无须担心编码,只会使您的生活变得更加复杂。
因为您 只是在看bytes ,所以它的编码和解码都 一样 。
但是,如果使用特定的编码,则会给编码/解码无效字符带来麻烦。