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

C# byte 陣列擴充方法實戰指南 (下):位運算、檔案儲存、記憶體流轉換

     編輯:關於C語言

前言

承接上篇,本文介紹 byte 陣列擴充方法的後四大實用場景:位元級操作、儲存為檔案、轉換為 MemoryStream、以及完整八大場景總結。

場景六:位元運算擴充 (針對單一 byte)

public static class ByteExtensions
{
    // 取得第 index 位是否為 1 (index 0 = LSB)
    public static bool GetBit(this byte b, int index)
        => (b & (1 << index)) > 0;

    // 設定第 index 位為 1
    public static byte SetBit(this byte b, int index)
        => (byte)(b | (1 << index));

    // 設定第 index 位為 0
    public static byte ClearBit(this byte b, int index)
        => (byte)(b & ~(1 << index));

    // 翻轉第 index 位
    public static byte ToggleBit(this byte b, int index)
        => (byte)(b ^ (1 << index));
}

用法:

byte flags = 0;
flags = flags.SetBit(0);  // 0000_0001
flags = flags.SetBit(3);  // 0000_1001
bool hasFlag = flags.GetBit(3); // true
flags = flags.ClearBit(0); // 0000_1000

場景七:儲存為檔案

public static void Save(this byte[] data, string path)
    => File.WriteAllBytes(path, data);

用法:myByteArray.Save(@"C:\data.bin");

場景八:轉換為 MemoryStream

public static MemoryStream ToMemoryStream(this byte[] data)
    => new MemoryStream(data);

用法:

using (var ms = myByteArray.ToMemoryStream())
{
    // 當作 Stream 傳遞給其他 API (如 Image.FromStream、XmlReader.Create)
}

八大場景完整速查表

#場景核心方法關鍵 API
1十六進位字串ToHex()byte.ToString("X2"), StringBuilder
2Base64 字串ToBase64String()Convert.ToBase64String
3基礎型別轉換ToInt(), ToInt64()BitConverter.ToInt32/ToInt64
4指定編碼字串Decode(Encoding)Encoding.GetString
5雜湊運算Hash(algorithmName)HashAlgorithm.Create, ComputeHash
6位元運算GetBit/SetBit/ClearBit/ToggleBit位元運算子 & | ^ ~ <<
7儲存檔案Save(path)File.WriteAllBytes
8記憶體流ToMemoryStream()new MemoryStream(bytes)

擴充方法設計原則

  1. this 修飾詞:第一參數加 this 使其成為擴充方法
  2. 靜態類別:擴充方法必須定義在 static class 中
  3. 命名空間:集中放在專用命名空間 (如 MyProject.Extensions),using 後即可使用
  4. 不可變性:byte 為實值型別,位元操作回傳新值,不修改原值
  5. 參數驗證:生產代碼應加入 index 範圍檢查 (0-7)

總結

byte 陣列擴充方法將常見位元組操作封裝為流暢 API,大幅提升程式碼可讀性與重用性。八大場景涵蓋編碼轉換、型別轉換、字串解碼、雜湊、位元操作、檔案 IO、串流互操作等核心需求。建議專案建立共用 ByteExtensions 類別,團隊統一使用,避免重複造輪子。

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