|
本帖最后由 香川群子 于 2012-7-13 22:53 编辑
代码写好了:- Function DBin(n, Optional l = 8)
- If l = 0 Then
- l = Len(n)
- For i = 1 To l
- DBin = DBin + Mid(n, i, 1) * 2 ^ (l - i)
- Next
- Else
- Do
- s = n Mod 2 & s
- n = n \ 2
- Loop While n
- If Len(s) < l Then DBin = Right(String(l, "0") & s, l) Else DBin = s
- End If
- End Function
- '首先是自定义函数的升级:默认十进制转为二进制(8位),升级为当第2参数=0时,再把二进制转换为十进制数。
- Sub BinReWrite() '二进制位值改写(1→0,0→1)
- Dim B As Byte
-
- Open ThisWorkbook.Path & "\Y.dat" For Binary As #1 '打开文件
-
- For A = 1 To 40 '可批量循环处理,举例为处理第1-40个数位
-
- i = (A - 1) \ 8 '计算该数位对应的字节数序号
- j = A - i * 8 '计算该数位在该字节中的位置
- Get #1, i + 1, B '从文件中获取含该数位的整个字节
- t = DBin(B) '用自定义函数转换该字节为二进制结果
-
- If Mid(t, j, 1) = 0 Then '检查该数位的二进制值
- Mid(t, j, 1) = 1 '是0则改写转换为1
- Else
- Mid(t, j, 1) = 0 '是1则改写转换为0
- End If
-
- 'Mid(t, j, 1) = C '或者如果不论该数位对应二进制结果是0还是1,一律改写为=C时,直接用这一句。
-
- B = DBin(t, 0) '改写完成后的二进制数,用自定义函数改回十进制数值的 新字节内容。
- Put #1, i + 1, B '把结果写入文件。(置换原来的字节)
-
- Next '整个循环结束。
-
- Close #1 '关闭文件
-
- End Sub
复制代码 |
评分
-
1
查看全部评分
-
|