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 // 设置写入标志