在 C# 開發中,有時需要將一個整數的十位數拆解為兩個獨立的位元組:高四位與低四位。這在處理特定通訊協定、硬體介面或資料壓縮時相當常見。
假設有一個整數 x = 123,其十位數為 2。將該數值視為一個 byte(即 0x02),高四位為 0,低四位為 2。透過位移與遮罩運算即可快速分離。
int x = 123;
// 取得十位數
int tensDigit = (x / 10) % 10;
// 高四位:右移 4 位(相當於除以 16)
byte highNibble = (byte)(tensDigit / 16);
// 低四位:取餘數 16(相當於 & 0x0F)
byte lowNibble = (byte)(tensDigit % 16);
tensDigit 的範圍為 0~9,因此高四位永遠為 0,低四位即為該數字本身。常見於 Modbus 協定資料封裝、感測器資料解析、檔案格式轉換等需將單一位元組拆為兩組 4-bit 欄位的場合。