⚡ BitCraft-S

v260212.17
結構支援版 - 精準位元操作工具

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 位址
所有欄位都顯示 HEX 和 DEC 值,以及雙重位元範圍(全域和欄位相對)。
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 // 設定寫入旗標