首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 位元組轉換實用方法總覽:從物件、十六進位、字元到字串的完整指南

     編輯:關於C語言

在 C# 開發中,位元組(byte)轉換是常見的基礎操作。無論是處理網路傳輸、檔案 I/O、加密演算法,還是與硬體裝置溝通,都少不了將各種資料型別轉換為位元組或位元組陣列。本文整理四種實用的轉換場景,提供可直接套用的靜態方法,並說明關鍵實作細節。

1. 將任意物件安全轉換為 Byte

此方法接受 object 型別參數,內部先檢查 null,再嘗試以 byte.TryParse 解析字串表示形式。若解析失敗或物件為 null,回傳預設值 0,避免拋出例外。

public static byte GetByte(object o)
{
    byte retVal = 0;
    if (o != null)
    {
        if (byte.TryParse(o.ToString().Trim(), out byte tmp))
        {
            retVal = tmp;
        }
    }
    return retVal;
}

適用場景: 從資料庫讀取可能為 DBNull 的欄位、解析使用者輸入的文字方塊內容、處理弱型別集合中的數值。

2. 十六進位字串轉 Byte(支援 0x 前綴)

利用 Convert.ToByte(string, 16) 直接解析十六進位字串。以 try-catch 包裝,格式錯誤時回傳 0。注意:輸入字串可包含或不包含 0x/0X 前綴,Convert.ToByte 皆能正確處理。

public static byte GetByteFromHex(string hexValue)
{
    try
    {
        return Convert.ToByte(hexValue, 16);
    }
    catch
    {
        return 0;
    }
}

適用場景: 解析色碼(如 "FF"、"0xFF")、通訊協定中的十六進位指令碼、設定檔中的位元旗標。

3. 單一字元轉 Byte

透過 Convert.ToChar 取得字元,再轉換為對應的位元組值(實際上取 Unicode 代碼點的低位元組)。適合處理單一字元的編碼轉換。

public static byte GetByteFromSingleString(string value)
{
    return GetByteFromChar(Convert.ToChar(value));
}

// 輔助方法(假設存在)
private static byte GetByteFromChar(char c) => (byte)c;

注意: 若字元超出 0-255 範圍(如中文字),僅保留低位元組,可能導致資料遺失。完整字元編碼建議使用 Encoding.GetBytes。

4. 字串轉位元組陣列(預設編碼)

使用 Encoding.Default.GetBytes 依目前系統預設 ANSI 編碼將字串轉為位元組陣列。跨平台或特定編碼需求時,建議明確指定 Encoding.UTF8 或 Encoding.Unicode。

public static byte[] GetBytes(string values)
{
    return System.Text.Encoding.Default.GetBytes(values);
}

最佳實務建議: 明確指定編碼以確保跨環境一致性,例如 Encoding.UTF8.GetBytes(values)。

總結與擴充建議

  • 四個方法涵蓋從物件、十六進位字串、單一字元、完整字串到位元組/位元組陣列的常見需求。
  • 實際專案中,建議將這些方法整合至通用工具類別(如 ByteConvertHelper),並加入 XML 文件註解。
  • 針對高效能場景,可考慮使用 Span<byte>、Memory<byte> 或 BinaryPrimitives 進行無配置轉換。
  • 處理字串編碼時,務必統一使用 UTF-8,避免 Encoding.Default 在不同作業系統產生不一致結果。

掌握這些基礎轉換技巧,能讓你在處理二進位資料、網路封包、檔案格式解析時更加得心應手。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved