|
10進数を2進数に高速に変換したいのですが
何かいい方法は無いでしょうか?
現在は下記のプログラムでバイナリファイルを読み込み2進数に変換という
作業を行っており、buf(i)の要素数は7000程度で、8桁の2進数へ変換しています。
(倍精度浮動小数点フォーマットで保存されているデータの変換
をしているプログラムの一部です。)
For〜Nextのループで1.5sec程度掛かってしまっているのですが
これを出来れば100msec以下に出来ればうれしいです。
作業環境はWin98、EXCEL2000です。
新しいパソコンを使用すれば早くなるのは分かっているのですが
なんとかする方法は無いでしょうか?
sub test()
Dim inputFileName As String
Dim inputFn As Long
Dim buf() As Byte
Dim X As Long
Dim Bin_Str() As String
inputFileName = "C:\data.ini"
inputFn = FreeFile
Open inputFileName For Binary As #inputFn
ReDim buf(LOF(inputFn))
Get #inputFn, , buf
Close #inputFn
FOR i=0 next Ubound(buf)
X=buf(i)
Bin_Str(i)=kDec2Bin(X)
Next
End Sub
Function kDec2Bin(ByVal num As Long) As String
Dim ss$, ii&, jj&, nn&
nn = IIf(num < 0, num + 2147483648#, num)
jj = 7 'jj+1 -> 2進数の桁数
While Not (-2 ^ jj <= num And num < 2 ^ jj) '桁数を求める
jj = jj + 8
Wend
For ii = 1 To jj
ss = (nn Mod 2) & ss '2進数の文字列作成 0or1
nn = nn \ 2
Next
kDec2Bin = IIf(num < 0, 1, 0) & ss
End Function
|
|