承接上篇,本文介紹 byte 陣列擴充方法的後四大實用場景:位元級操作、儲存為檔案、轉換為 MemoryStream、以及完整八大場景總結。
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");
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 |
| 2 | Base64 字串 | 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) |
this 使其成為擴充方法static class 中MyProject.Extensions),using 後即可使用index 範圍檢查 (0-7)byte 陣列擴充方法將常見位元組操作封裝為流暢 API,大幅提升程式碼可讀性與重用性。八大場景涵蓋編碼轉換、型別轉換、字串解碼、雜湊、位元操作、檔案 IO、串流互操作等核心需求。建議專案建立共用 ByteExtensions 類別,團隊統一使用,避免重複造輪子。