タイトル : Re^5: バイト配列の表示 投稿日 : 2010/04/03(Sat) 17:54 投稿者 : 魔界の仮面弁士
> やってみたところ16進数表記ではダメみたいです。 具体的には、どの点において駄目という意味でしょうか? ・バイナリデータの表示にテキストボックスを使おうとした点。 ・テキストを16進数として表記しようとした私の案。 ・16進数変換に Conveter クラスを用いた私の回答。 ・テキストからバイナリを復元するところで躓いてしまった。 ・テキストからバイナリを復元することまではできたが、処理速度が遅くて使えない。 ・テキストからバイナリを復元することはできたが、記述が冗長的になってしまった。 > Converter.Tostring()を使って変換した文字列を10進表記に出来ないでしょうか? その「10進数表記」の文字列を生成する目的は何でしょうか? 理由を説明してもらえれば、別の解決策を提示できるかもしれません。 もしかしたら、そもそも16進数表記にする事自体が選定ミスであり、 最初から10進数表記の文字列にすべきだったのかも知れませんし。 そもそも、画像データの格納先は、SQL Server の varbinary 型なのですよね。 それを PictureBox だけではなく、TextBox にも表現させている理由も分かりません。 > ループで回して変換する以外無いでしょうか? ループを使えば処理できたという意味でしょうか? ループで都合が悪い理由が分かりませんが、ループを使いたくないのであれば、 Array.ForEach や Array.ConvertAll を使って変換するという手もあります。 (目的が分からないので、適切な回答になっているかどうかは分かりませんが…) なお、10進数(あるいは16進数)で表記するという話は無かったことにして、 バイナリ → 文字列(形式は不問) → バイナリ という変換/復元を行いたいだけであれば、メールへのファイル添付などに使われている 「Base64」という技術を用いるという手もあります。 この場合には、ConvertクラスのToBase64String/FromBase64String メソッドを使えます。 なお、バイナリ/テキスト変換には、Base64 以外にも ish や uuencode など、 幾つかの形式があります。(VB.NET から使うなら、Base64 の方が手軽でしょうけれどね) あるいは下記のように、SQL Server 側で変換させるという方法も考えられます。 データ量が少ない場合であれば有効かと。 http://blogs.msdn.com/sqltips/archive/2008/07/02/converting-from-hex-string-to-varbinary-and-vice-versa.aspx その他、バイナリデータと一緒にファイル名や画像サイズなど、複数の情報も一緒に保持して 文字列化したいのであれば、XmlSerializer クラスを用いるという選択肢もあります。 もっとも、今回は SQL Server に格納するようなので、その必要は無いとは思いますけれどね。 http://dobon.net/vb/dotnet/file/xmlserializer.html > あんな膨大な文書の中から何も知らずに探すのは無理じゃないですか。 是非、どのように改善すべきかを、具体的に検討・提案してみてください。 "逆引きサンプルコード" や "10行でズバリ!" なども、ユーザーの声から生まれてきた物ですし、 Visual Studio 2010 の新しいヘルプ ビューワーシステムにしても、そうした検討の結果です。 http://msdn.microsoft.com/ja-jp/cc974601.aspx http://msdn.microsoft.com/ja-jp/ff363212.aspx > あんな膨大な文書の中から つまり、先の「もうちょっと分かるように書いてほしい」といっていた言葉は、 MSDN の内容に読み取りにくい記事があった、という意味というよりは、むしろ 目的の情報にたどり着けない/探しにくい、という意味だったのですね。 > 何も知らずに探すのは無理じゃないですか。 ヘルプを完読できるかといえば、それはほぼ不可能でしょうしね。 なので検索時間を短くするために、google や bing を併用したり、検索キーワードを 検討するなど、ある程度のテクニックや日頃の情報収集は必要になってくると思います。 [MSDN 検索術 〜検索テクニックを実例付きで解説!〜] … 検索サイトの活用術について実例付きで紹介 http://msdn.microsoft.com/ja-jp/kensaku.aspx [MSDNの羅針盤] … 相当古い記事なので、現状に即さない部分もあるかも知れません http://web.archive.org/web/20051029104919/www.galliver.co.jp/map/index.html > 機能別の一覧を別に設けるとかすればいいのでは? そもそも .NET のクラスは、名前空間によってある程度体系づけられていますが、 それとは別に、「機能」という括りでまとめられた資料が必要という事ですね。 ここでいう機能というのがどの範囲を指しているのか分からなかったのですが、 どのような一覧なのか、何か具体的な例を挙げることはできますか? また、その一覧自体が結局また「膨大な文書」になってしまう事は無いのでしょうか? > 偶然見つけられる事はあっても、見つけるのに1日じゃすまないと思います。 何も知らずに探すのは無理だとしても、以前見た(≠読んだ)ことがある記事であれば、 探し当てるのも容易となりますので、普段から目を通している人だと、検索も早いようです。 > ヘルプを見るのは困ったから見るのであって、見ても全然役に立たないのはヘルプと > 言えないと思います。 MSDN の文書には、Visual Studio の開発環境(IDE)のヘルプとしての意味もありますが、 クラスの仕様解説書としての意味合いもあります。また、チュートリアルなどの入門者向けの 読み物も含まれていますし、サンプル等もあります。目的に応じて、それらを読み分けてみてください。 たとえば国語辞典は、「この言葉の意味は何だろう?」という時には役に立ちますが、 「こういう時には何と表現すれば良いのだろう?」という目的には使いにくいですよね。 そういう際には、逆引き辞典や文例集の類を利用するかと思いますが、それと同じことかと。 |