首页 >后端开发 >C++ >如何在不指定编码的情况下获取C#字符串的原始字节表示?

如何在不指定编码的情况下获取C#字符串的原始字节表示?

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-02-01 05:26:08568浏览

How Can I Get the Raw Byte Representation of a C# String Without Specifying Encoding?

在 C# 中获取字符串的原始字节表示(无需指定编码)

在 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn