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