公式:计算位图一行的字节数(一条扫描线长度)

这些公式都可以计算出来:

行字节数 = (宽度 * (位深/8) + 3) & ~3
位与 (宽度 × 位深 ÷ 83, 位取反 (3))
左移 (右移 (宽度 × 位深 + 31, 5), 2)

易代码

.版本 2

.子程序 对齐, 整数型
.参数 待对齐数, 整数型
.参数 对齐长度, 整数型, , 1 2 4 8 16 32 64 ...

对齐长度 = 逆向位扫描 (对齐长度)
.如果真 (对齐长度 > 0)
    对齐长度 = 左移 (1, 对齐长度)1
    返回 (位与 (待对齐数 + 对齐长度, 位取反 (对齐长度)))
.如果真结束
返回 (待对齐数)

.子程序 逆向位扫描, 整数型
.参数 待扫描数, 整数型

置入代码 ({ 15, 189, 69, 8, 201, 194, 4, 0 })
' 十六进制:0F BD 45 08 C9 C2 04 00
' bsr eax, dword ptr [ebp+08h]
' leave
' retn 4
返回 (0)

你可能感兴趣的:(公式)