DOBON.NET DOBON.NETプログラミング掲示板過去ログ

byte配列の検索

  • 題名: byte配列の検索
  • 著者: たかし
  • 日時: 2006/06/20 17:05:02
  • ID: 16312
  • この記事の返信元:
    • (なし)
  • この記事への返信:
  • ツリーを表示
環境/言語:[WinXP vb.net 2003 Fw ]
分類:[.NET]

お世話になっております。

byte配列の中から改行コードを探し、
それ以降のデータを別のbyte配列に移す
プログラムを実装しています。

IndexOfを使用したのですが、うまくいきません。
(0もしくは-1が返ってきます)
使用方法が間違っているのでしょうか。
また、他によい方法がありますでしょうか。


'改行の検索
intNum = System.Array.IndexOf(bArry1, vbNewLine)

'配列のコピー
bArry1.CoopyTo(bArry2,intNum)


宜しくお願いします。
VbNewLine は String 型ですからそりゃ Byte 配列からは見つからんでしょう。
そもそも、Windows では一般的に CR(&H0D)と LF(&H0A)の二つで一つの改行を表現しますが、このどちらで判定したいのでしょうか?
また、その byte 配列は ASCII で解釈して良いのですか? Unicode(UTF-16)なら一文字で 2 バイトずつになりますが。
Hongliangさん
回答ありがとうございます

バイト配列はUTF-8で扱っています。

>そもそも、Windows では一般的に CR(&H0D)と LF(&H0A)の
>二つで一つの改行を表現しますが、このどちらで判定したいのでしょうか?
VbNewLineで改行を入れた場合、バイト配列には
&H0D &H0A で格納されるということでしょうか。

このあたりを理解するには、どういったことから
勉強すればよいでしょうか。
■No16317に返信(たかしさんの記事)
> VbNewLineで改行を入れた場合、バイト配列には
> &H0D &H0A で格納されるということでしょうか。
>
> このあたりを理解するには、どういったことから
> 勉強すればよいでしょうか。

オブジェクト ブラウザで vbNewLine がどうなっているかを見てください。
概要 : vbNewLine = Chr(13) + Chr(10) - 改行文字。となっています。
  • 題名: Re[3]: byte配列の検索
  • 著者: 魔界の仮面弁士
  • 日時: 2006/06/20 20:22:52
  • ID: 16320
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
> バイト配列はUTF-8で扱っています。
その場合、CRLF は
 0D 0A
という 2 バイトのバイナリになります。


> VbNewLineで改行を入れた場合、バイト配列には
> &H0D &H0A で格納されるということでしょうか。

そもそも VbNewLine はバイト配列ではありません。文字列です。

それを UTF8 としてエンコーディングすれば、&H0D, &H0A になりますが、
他のエンコーディングであれば、異なるバイト配列となる事もあります。

Dim B() As Byte

'この場合は、「0D-0A」となる。
B = System.Text.Encoding.UTF8.GetBytes(vbNewLine)
Trace.WriteLine(System.BitConverter.ToString(B))

'この場合は、「0D-00-0A-00」となる。
B = System.Text.Encoding.Unicode.GetBytes(vbNewLine)
Trace.WriteLine(System.BitConverter.ToString(B))

DOBON.NET | プログラミング道 | プログラミング掲示板