tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルバイナリデータ表示
記事No7592
投稿日: 2008/05/22(Thu) 19:10
投稿者M-tutu
おせわになります。

VB2008でバイナリファイルを読み込み、
データを16進に変換させ表示させるソフトを作ってみたんですが、
表示は問題ないのですが、
ファイルサイズ500Kのファイルを開くと1分以上かかってしまいます。
Pen3-500M メモリ256のWIN2Kです。
スペックに問題があるのでしょうか?

解決策がありましたら教えてください。
よろしくお願いします。

[ツリー表示へ]
タイトルRe: バイナリデータ表示
記事No7593
投稿日: 2008/05/22(Thu) 20:08
投稿者魔界の仮面弁士
> データを16進に変換させ表示させるソフトを作ってみたんですが、
手抜きで良いなら、System.BitConverter.ToString を使うことで、
Byte 配列を 16進数表現の文字列に変換できます。


> 1分以上かかってしまいます。
遅い原因は、文字列連結を繰り返し行っているせいでしょう。

Dim sb As New System.Text.StringBuilder()
For i As Integer = 0 To UBound(bData) - 1
    sb.AppendFormat("{0:X2}", bData(i))
    If i Mod 16 = 15 Then
        sb.AppendLine()
    End If
Next
TextBox1.Text = sb.ToString()

[ツリー表示へ]
タイトルRe^2: バイナリデータ表示
記事No7594
投稿日: 2008/05/22(Thu) 20:29
投稿者M-tutu
魔界の仮面弁士さん

一瞬で表示させる事ができました。
ご回答ありがとうございました。

[ツリー表示へ]
タイトルRe^3: バイナリデータ表示
記事No7597
投稿日: 2008/05/22(Thu) 23:39
投稿者魔界の仮面弁士
> 一瞬で表示させる事ができました。
> ご回答ありがとうございました。

No.7592 にあったソースが無くなっていますね。再掲載できませんか?

後から見た時に、話の流れが分からなくなってしまうので、
元のソースを削除するのは避けて頂きたいです。


「修正前のコード」というのも、解決に至る過程に対する、共有すべき大事な情報ゆえに。

[ツリー表示へ]
タイトルRe^4: バイナリデータ表示
記事No7598
投稿日: 2008/05/23(Fri) 09:45
投稿者よねKEN
#脱線です。

> No.7592 にあったソースが無くなっていますね。再掲載できませんか?

そういうことだったのですね。
魔界の仮面弁士さんの回答を見たときに
ついに超能力に目覚められたのかと思いました(笑)

> 後から見た時に、話の流れが分からなくなってしまうので、
> 元のソースを削除するのは避けて頂きたいです。

見事に話の流れがわからなくなった一人です。

[ツリー表示へ]
タイトルRe^4: バイナリデータ表示
記事No7606
投稿日: 2008/05/23(Fri) 16:38
投稿者ゆうき
ゆうきです。

よねKENさんと同じで、私も引っかかりました。

> No.7592 にあったソースが無くなっていますね。再掲載できませんか?
>
> 後から見た時に、話の流れが分からなくなってしまうので、
> 元のソースを削除するのは避けて頂きたいです。

そうですね。どういう状況かわからないのでぜひお願いします。

[ツリー表示へ]
タイトルRe^2: バイナリデータ表示
記事No7595
投稿日: 2008/05/22(Thu) 21:19
投稿者M-tutu
度々すいません、M-tutuです。

作っていただいたソースを
リトルエンディアンで表示する事は可能でしょうか?

お手数ですが教えてください。

[ツリー表示へ]
タイトルRe^3: バイナリデータ表示
記事No7596
投稿日: 2008/05/22(Thu) 22:52
投稿者魔界の仮面弁士
> リトルエンディアンで表示する事は可能でしょうか?

どういう意味でしょう?

バイナリを「1 バイト単位」で表示しているのですから、
little endian も big endian も無いと思いますけれども、
具体的には、どのように表現したいのでしょうか?


AA,BB,CC,DD という並びのファイルがあったときに、little endian の場合、
 「&HDDCCBBAA という Integer値(3,721,182,122)」または
 「&HBBAA という Short値(48,042) と &HDDCC という Short値(56,780)」
というデータとみなされ、big endian なら、
 「&HAABBCCDD という Integer値(284,434,397)」または
 「&HAABB という Short値(43,707) と &HCCCC という Short値(52,445)」
の意味になる、という物ですよね。<エンディアン

[ツリー表示へ]