tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルバイナリー不正データ処理
記事No5134
投稿日: 2007/03/15(Thu) 21:54
投稿者とし
vb.net2005で以下の処理をしたいのですがやり方がわかりません。
みなさんご教授願います。

データに以下の不正なデータが含まれております。
"GU    34313
"
バイナリーで確認すると、以下の1行目の様になっております。
22 47 55 20 20 20 20 33 34 33 31 33 0D 22 0D 0A
"  G  U              3  4  3  1  3  "
これをGU    34313だけにしたいのですが、どの様な方法がありますでしょうか?

よろしくお願いします。

[ツリー表示へ]
タイトルRe: バイナリー不正データ処理
記事No5136
投稿日: 2007/03/16(Fri) 00:02
投稿者魔界の仮面弁士
なぜ、34313 が正常なデータで、それ以外の部分が不正なデータなのか、
その具体的な定義を示されないことには、回答案も出てこないのでは。

# バイナリ位置が重視されているのか、特定の範囲の値のみを取り出すのか、
# それとも、データの並びが重要な意味を持つのか…。

[ツリー表示へ]
タイトルRe: バイナリー不正データ処理
記事No5137
投稿日: 2007/03/16(Fri) 04:28
投稿者ポアロ
hoge=replace(hoge,vbcr,"")
または
hoge=replace(replace(hoge,vbcr,""),vblf,vbcrlf)
のどちらかでしょうね。

[ツリー表示へ]
タイトルRe: バイナリー不正データ処理
記事No5138
投稿日: 2007/03/16(Fri) 09:19
投稿者よねKEN
> データに以下の不正なデータが含まれております。
> "GU    34313
> "

魔界の仮面弁士さんの指摘以外に、
そのデータは何型の変数に保存しているのかも説明お願いします。

""で括っている点から、String型の変数に入れているのだろうという気がしますが、
タイトルで見ると「バイナリー」を強調されているので、
Byte型の配列変数に入れているのかな?という可能性も考えられます。

> バイナリーで確認すると、以下の1行目の様になっております。
> 22 47 55 20 20 20 20 33 34 33 31 33 0D 22 0D 0A
> "  G  U              3  4  3  1  3  "
> これをGU    34313だけにしたいのですが、どの様な方法がありますでしょうか?

後、このデータは何故、不正なデータになったのでしょうか?
例えば、このデータが別のシステムから転送されてくるデータで、
その時点で不正である、ということであれば、そのこと自体を回避できないのでしょうか?
システム的な理想を言えば、不正になってから対処するのではなく、
不正にならないように手を打つのが最善策です。

#業務アプリ開発では、相手のシステムが悪いのだけど既存のシステムだから・・・
#新システム側が泥臭い方法で対応しましょう、となることも少なくないですが

[ツリー表示へ]
タイトルRe: バイナリー不正データ処理
記事No5140
投稿日: 2007/03/17(Sat) 09:12
投稿者とし
返事遅くなりました。結論から言うとポアロさんに教えて頂いた方法で解決する事ができました。ありがとうございました。
聞きたい内容が正確に記載できてませんでした。
やりたかった事は、文字列中のダブルコーテーションと改行コードを外したかったのです。
確かに今見ると意味不明でした。次回から気をつけて投稿したいと思います。

[ツリー表示へ]