首頁 >後端開發 >C++ >如何在不指定編碼的情況下獲取C#字符串的原始字節表示?

如何在不指定編碼的情況下獲取C#字符串的原始字節表示?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-02-01 05:26:08571瀏覽

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