Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


10937 / 76734 ←次へ | 前へ→

【71339】10進数から2進数への高速変換
質問  kein  - 12/2/22(水) 23:14 -

引用なし
パスワード
   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

3 hits

【71339】10進数から2進数への高速変換 kein 12/2/22(水) 23:14 質問
【71340】Re:10進数から2進数への高速変換 kanabun 12/2/23(木) 0:20 発言
【71341】Re:10進数から2進数への高速変換 ちん 12/2/23(木) 0:34 発言
【71344】Re:10進数から2進数への高速変換 kanabun 12/2/23(木) 17:11 発言
【71345】Re:10進数から2進数への高速変換 kein 12/2/23(木) 20:55 お礼
【71354】Re:10進数から2進数への高速変換 yoko 12/2/24(金) 17:44 発言
【71355】Re:10進数から2進数への高速変換 ichinose 12/2/24(金) 18:07 発言
【71360】Re:10進数から2進数への高速変換 kein 12/2/24(金) 23:45 質問
【71363】Re:10進数から2進数への高速変換 ichinose 12/2/25(土) 1:17 発言
【71364】Re:10進数から2進数への高速変換 ichinose 12/2/25(土) 1:41 発言
【71365】Re:10進数から2進数への高速変換 kein 12/2/25(土) 2:05 お礼
【71367】二箇所訂正です ichinose 12/2/25(土) 11:23 発言

10937 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free