BitCraft-S 是一款強大的位元操作計算機,支援結構定義。它提供視覺化位元編輯、數學運算和進階的結構欄位管理功能,適合硬體工程師、協定開發人員和底層程式設計師使用。
🚀 快速功能
視覺化位元編輯器
點擊任何位元來切換 0/1
結構支援
定義和編輯位元欄位結構
表達式計算機
使用變數和運算子進行計算
智慧顯示格式
自動識別 IPv4、MAC、IPv6 格式
任意位元寬度
支援 1-1024 位元,不受限於 4 的倍數
雙重位元範圍
顯示全域和欄位相對範圍
📝 基本操作
核心
變數賦值
建立變數並賦值。支援 HEX、DEC 和 BIN 格式。
範例:
>>> A = 100
A updated
>>> B = 0x32
B updated
>>> C = 0b11010
C updated
// 查詢變數
>>> A
A = 0x00000064 (100)
新版
任意位元寬度
建立任意位元寬度(1-1024 位元)的變數,不受限於 4 位元的倍數。可使用快速按鈕設定常見寬度,或使用「Set」按鈕自訂數值。
命令列語法: 變數:位元數 = 值
>>> A:5 = 0x1F
A (5 位元) = 0x1F
>>> B:13 = 0x1ABC
B (13 位元) = 0x1ABC
// 數值會自動截斷到位元寬度
>>> C:7 = 0xFF
C (7 位元) = 0x7F // 0xFF & 0x7F = 0x7F
快速寬度按鈕(於介面中):
// 點擊這些按鈕可立即變更位元寬度:
[128] [96] [64] [48] [32] [16] [Set]
// 常見用途:
[128] → IPv6 位址、UUID
[96] → 部分加密金鑰
[64] → long、double、時間戳記
[48] → MAC 位址
[32] → int、IPv4 位址
[16] → short、連接埠號碼
// 點擊 [Set] 按鈕自訂位元寬度 (1-1024)
[Set] → 開啟彈出視窗 → 輸入:13 → 建立 13 位元變數
新版
表達式計算
使用變數、數字和運算子進行計算。支援算術、位元和移位運算。
算術運算:
>>> A = 100
>>> B = 0x32
>>> C = A + B + 0x1
C = 0x00000097 (151)
>>> D = A * 2 - B
D = 0x00000096 (150)
位元運算:
>>> E = A & 0xFF
E = 0x00000064 (100)
>>> F = A | B
F = 0x00000072 (114)
>>> G = A ^ B
G = 0x00000052 (82)
移位運算:
>>> H = 0x10 << 2
H = 0x00000040 (64)
>>> I = 0xFF >> 4
I = 0x0000000F (15)
>>> J = (A << 1) + B
J = 0x000000FA (250)
核心
位元範圍操作
擷取或修改變數中的特定位元範圍。
語法: 變數[高位:低位]
>>> A = 0x12345678
// 擷取位元 [23:16]
>>> A[23:16]
A[23:16] = 0x34 (52)
// 修改位元 [15:8]
>>> A[15:8] = 0xAB
A[15:8] updated
// A 變為 0x1234AB78
🏗️ 結構支援
進階
結構定義
使用具名欄位定義位元欄位結構。支援兩種語法樣式和兩種欄位分隔符號(逗號或分號)。
語法一:寬度樣式
>>> S{A:8, B:16, C:8} = 0x12345678
S created.
語法二:範圍樣式
>>> T{A[31:24], B[23:8], C[7:0]} = 0x12345678
T created.
替代方案:分號分隔符號
>>> U{A:8; B:16; C:8} = 0x12345678
U created.
>>> V{A[31:24]; B[23:8]; C[7:0]} = 0x12345678
V created.
// 逗號和分號都可作為欄位分隔符號
複雜結構範例:
>>> IP{VER:4, HDL:4, DSCP:6, ECN:2, TLEN:16, ID:16, FLAG:3, FRAG:13, TTL:8, PROTO:8, CKS:16, SIP:32, DIP:32} = 0x451C00140000000000007F000001E0000001
IP created.
// 總計:160 位元(IPv4 標頭)
進階
欄位存取與修改
使用點號標記法讀取和寫入個別結構欄位。
欄位查詢:
>>> IP.SIP
IP[31:0].SIP[31:0] = 0x7F000001 (2130706433) [127.0.0.1]
>>> IP.VER
IP[3:0].VER[3:0] = 0x4 (4)
// 格式:結構[全域範圍].欄位[欄位範圍] = HEX (DEC) [特殊格式]
欄位賦值:
>>> IP.SIP = 0xC0A80001
IP[31:0].SIP[31:0] = 0xC0A80001 (was 0x7F000001)
>>> IP.TTL = 64
IP[7:0].TTL[7:0] = 0x40 (was 0x0)
欄位表達式:
>>> IP.SIP = 0x7F000001
>>> A = IP.SIP + 1
A = 0x7F000002
>>> B = IP.SIP & 0xFF
B = 0x00000001
新版
智慧欄位顯示與特殊格式
欄位根據其位元寬度自動以特殊格式顯示:
- 32 位元 → IPv4 位址
- 48 位元 → MAC 位址
- 128 位元 → IPv6 位址
IPv4 位址(32 位元):
>>> IP{..., SIP:32, DIP:32} = ...
>>> IP.SIP
IP[31:0].SIP[31:0] = 0xC0A80001 (3232235521) [192.168.0.1]
>>> IP.DIP
IP[31:0].DIP[31:0] = 0x08080808 (134744072) [8.8.8.8]
MAC 位址(48 位元):
>>> ETH{DST:48, SRC:48, TYPE:16} = ...
>>> ETH.SRC
ETH[47:0].SRC[47:0] = 0x001122334455 (18838586676309) [00:11:22:33:44:55]
>>> ETH.DST
ETH[47:0].DST[47:0] = 0xFFFFFFFFFFFF (281474976710655) [FF:FF:FF:FF:FF:FF]
IPv6 位址(128 位元):
>>> IPv6{ADDR:128} = 0x20010DB885A3000000008A2E03707334
>>> IPv6.ADDR
IPv6[127:0].ADDR[127:0] = 0x20010DB8... (...) [2001:db8:85a3:0:0:8a2e:370:7334]
點擊欄位名稱查詢:
// 在介面中,點擊視覺顯示中的任何欄位名稱
[點擊 "SIP"] → 自動執行:IP.SIP
IP[31:0].SIP[31:0] = 0x7F000001 (2130706433) [127.0.0.1]
新版
欄位 HEX 輸入與表達式
直接在欄位的 HEX 輸入框中輸入表達式。結果會自動截斷至欄位寬度。
在介面中:
// 欄位 "SIP" 原始值:0xA1
// 在 HEX 輸入框中輸入:
0xA1 << 2 // 結果:0x284(自動截斷至欄位寬度)
0xA1 + 0x10 // 結果:0xB1
0xFF >> 4 // 結果:0x0F
IP.DIP & 0xFF // 可以參考其他欄位!
(0x12 << 4) | 0x34 // 複雜表達式也可以運作
自動截斷:
// 欄位寬度:8 位元(遮罩 = 0xFF)
0x1234 // 儲存為:0x34
// 欄位寬度:4 位元(遮罩 = 0xF)
0xFF // 儲存為:0xF
// 欄位寬度:16 位元
0x1234 << 5 // 結果:0x4680(0x24680 被截斷)
進階
視覺化欄位編輯
每個結構欄位顯示:
- 欄位名稱與欄位內的 MSB/LSB(相對於欄位,而非全域)
- 可編輯的 HEX 值(支援表達式)
- 可點擊的位元按鈕,對齊至上方全域位元
欄位顯示結構:
┌─────────────────┐
│ 4 欄位名稱 0 │ ← 標題(欄位內的 MSB/LSB)
├─────────────────┤
│ 0x12 │ ← HEX 輸入(支援表達式)
├─────────────────┤
│ 1 0 0 1 0 │ ← 位元按鈕(點擊切換)
└─────────────────┘
// 範例:5 位元欄位
// MSB = 4(而非全域位元 28)
// LSB = 0(對於欄位內始終為 0)
完美對齊:
// 全域位元列:
│0│0│0│1│0│0│1│0│0│0│1│1│ ...
// 欄位 A 位元(對齊!):
│0│0│1│
// 欄位 B 位元(對齊!):
│1│0│0│1│0│
// 每個欄位位元都與上方的全域位元完美對齊
⚡ 進階功能
核心
視覺化位元編輯器
點擊視覺顯示中的任何位元來切換 0 和 1。對全域位元和欄位內位元都有效。
使用方法:
// 建立變數
>>> A = 0x0
// 點擊位元 0 → A 變成 0x1
// 點擊位元 4 → A 變成 0x11
// 再次點擊位元 0 → A 變成 0x10
// 對於結構,點擊欄位位元來修改該特定欄位
核心
運算與套用
使用運算下拉選單和「Go」按鈕對變數套用位元和算術運算。
可用的運算:
移位: << (左移) >> (右移)
算術: + - * / %
位元: & | ^ ~ (NOT)
範例:
// 1. 建立變數 A = 0x10
// 2. 選擇運算:<<
// 3. 輸入參數:2
// 4. 點擊「Go」
// 結果:A = 0x40
核心
多種數字格式
以 HEX、DEC 或 BIN 格式輸入和顯示數值。
輸入格式:
>>> A = 0x1A // 十六進位(前綴:0x)
>>> B = 26 // 十進位(無前綴)
>>> C = 0b11010 // 二進位(前綴:0b)
// 以上三個都代表相同數值:26
顯示:
// 每個變數顯示:
- 標題:HEX 值(可點擊複製)
- 主體:DEC 值(可點擊複製)
- 網格:HEX 半位元組和二進位位元
核心
大數支援
處理最多 1024 位元(256 個半位元組)的數值。適合加密金鑰、IPv6 位址和大型資料結構。
範例:
// IPv6 位址(128 位元)
>>> IPv6 = 0x20010DB885A3000000008A2E03707334
// 256 位元數字
>>> BigNum:256 = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
// 使用「Set」按鈕設定自訂寬度
// 支援 1-256 個半位元組(4-1024 位元)
核心
持續儲存
所有變數、結構及其狀態都會自動儲存至瀏覽器 localStorage。您的工作會在重新載入頁面後保留。位元操作期間會維持捲動位置,確保流暢的編輯體驗。
功能:
✓ 每次變更自動儲存
✓ 重新載入時恢復
✓ 記住捲動位置(水平和垂直)
✓ 位元切換操作時保持視窗位置
✓ 儲存運算狀態
✓ 點擊「RESET」按鈕清除所有資料
核心
流暢編輯體驗
BitCraft-S 在所有操作期間保持您的視窗位置,確保即使有多個大型物件也能有流暢的編輯體驗。
視窗位置維護:
// 使用多個物件:
>>> A = 0x1234
>>> B = 0x5678
>>> C = 0x9ABC
>>> D = 0xDEF0
// 向下捲動到物件 D
// 點擊 D 中的任何位元
// ✓ 視窗停留在 D(不會跳回頂部)
// 水平捲動查看 MSB 位元
// 切換任何位元
// ✓ 維持水平位置
優點:
✓ 編輯位元時視窗不會跳動
✓ 水平和垂直捲動都維持
✓ 流暢的多物件工作流程
✓ 專注於您正在處理的部分
✓ 適用於大型結構(160+ 位元)
💡 提示與技巧
鍵盤快速鍵
Enter 執行命令或套用欄位編輯
Esc 清除命令輸入
點擊 切換位元、複製數值
快速複製
點擊任何 HEX 或 DEC 值即可複製到剪貼簿。
右對齊顯示
位元網格預設為右對齊,最低位元(LSB)顯示在右側。對於寬結構,向左捲動可查看高位元(MSB)。
常見用途
網路協定標頭:
>>> TCP{SRC:16, DST:16, SEQ:32, ACK:32, ...} = 0x...
硬體暫存器:
>>> STATUS{READY:1, ERROR:1, BUSY:1, RESERVED:29} = 0x...
位元遮罩:
>>> MASK = 0xFF00
>>> VALUE = DATA & MASK
旗標管理:
>>> FLAGS{READ:1, WRITE:1, EXEC:1, RESERVED:29} = 0x5
>>> FLAGS.WRITE = 1 // 設定寫入旗標