在 C# 中处理字符串时,了解字符编码对其字节表示的影响至关重要。但是,如果目标只是获取原始字节而无需任何解释,则存在一种替代方法可以避免显式指定编码。
与传统建议相反,如果不需要解释字节,则可以在 C# 中获取字符串的字节表示而无需指定编码。这种方法简化了流程并确保字节表示的一致性。
为此,可以使用 System.Buffer.BlockCopy
,如下所示:
<code class="language-csharp">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; }</code>
此函数返回一个字节数组,该数组准确地表示系统上用于存储字符串的字节。要从字节中检索原始字符串,可以使用以下函数:
<code class="language-csharp">// 请勿对任意字节使用此函数;仅对相同系统上的 GetBytes 输出使用 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); }</code>
这种方法优于使用特定编码,原因在于:
以上是如何在不指定编码的情况下获取C#字符串的原始字节表示?的详细内容。更多信息请关注PHP中文网其他相关文章!