C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: byte配列の値をそのままlistboxに表示するには?


(過去ログ 31 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■14784 / inTopicNo.1)  byte配列の値をそのままlistboxに表示するには?
  
□投稿者/ きのまる (1回)-(2008/02/27(Wed) 00:24:38)

分類:[C#] 

C#2005を使用しております。

byte配列があって、そこに0〜255の値が入っているのですが、その値を
listboxに表示したいと思っています。ASCIIコードの場合には

listBox1.Items.Add(System.Text.Encoding.ASCII.GetString(data));

※dataは1024バイトのbyte型配列です

で表示できるのですが、配列に入っている各要素の値を16進数で表示したいと思っております。
配列の値を16進数で表示するにはどのようにしたらよいでしょうか。

ちなみに

listBox1.Items.Add(System.Convert.ToString(Uart_data));

のようにしたら、System.byte[] という表示になってしまい値が表示されませんでした。

どなたかご教授いただければ幸いです。
よろしくお願いいたします。

引用返信 編集キー/
■14786 / inTopicNo.2)  Re[1]: byte配列の値をそのままlistboxに表示するには?
□投稿者/ Blue (363回)-(2008/02/27(Wed) 00:41:10)
具体的にどのように表示してもらいたいのでしょうか?

配列の中身全部?→ループの必要があり
10進形式?16進形式?→1要素(Byte型)に対してのToStringメソッドで形式を指定できる
引用返信 編集キー/
■14787 / inTopicNo.3)  Re[1]: byte配列の値をそのままlistboxに表示するには?
□投稿者/ やじゅ (190回)-(2008/02/27(Wed) 00:45:19)
やじゅ さんの Web サイト
No14784 (きのまる さん) に返信
> C#2005を使用しております。
> で表示できるのですが、配列に入っている各要素の値を16進数で表示したいと思っております。
> 配列の値を16進数で表示するにはどのようにしたらよいでしょうか。
>

16進数表示
int ivalue = Convert.ToInt32(c);
string hex = String.Format("{0:X2}", ivalue);
引用返信 編集キー/
■14789 / inTopicNo.4)  Re[2]: byte配列の値をそのままlistboxに表示するには?
□投稿者/ きのまる (3回)-(2008/02/27(Wed) 00:57:06)
No14786 (Blue さん) に返信
> 具体的にどのように表示してもらいたいのでしょうか?
>
> 配列の中身全部?→ループの必要があり
> 10進形式?16進形式?→1要素(Byte型)に対してのToStringメソッドで形式を指定できる

返信ありがとうございます。
具体的には、例えば data配列の要素0〜5までに 0x41,0x42・・・,0x46 という値が入っていたとして
他の要素6〜1024までは0が入っています。

これを、listboxに 0x41,0x42〜,0x46 というように表示したいのです。

listBox1.Items.Add(System.Text.Encoding.ASCII.GetString(data));

上記のようにすると ABCDEF とASCIIコードで表示されてしまいます。
これをABCDEFではなく、16進数として表示したいと思っております。
よろしくお願いいたします。
引用返信 編集キー/
■14791 / inTopicNo.5)  Re[3]: byte配列の値をそのままlistboxに表示するには?
□投稿者/ Blue (364回)-(2008/02/27(Wed) 01:08:09)
2008/02/27(Wed) 01:09:13 編集(投稿者)

馬鹿単純※に考えると

string s;
foreach (byte b in Uart_data)
{
// 0x00がでたらループを抜けるならここにif文とかいれる
s += b.ToString("X2") + ","
}
listBox1.Items.Add(s);

となるけど、
>配列の中身全部?→ループの必要があり
>10進形式?16進形式?→1要素(Byte型)に対してのToStringメソッドで形式を指定できる
のヒントで、なにかわからないことがあったのでしょうか?


※string型変数に += で追加するのは好ましくないでしょう。→StringBuilderあたりを使う
最後に "," がつく。→if文とかで判定するか、ループを抜けた後とるとか。
etc...
引用返信 編集キー/
■14792 / inTopicNo.6)  Re[4]: byte配列の値をそのままlistboxに表示するには?
□投稿者/ きのまる (5回)-(2008/02/27(Wed) 01:30:29)
> string s;
> foreach (byte b in Uart_data)
> {
> // 0x00がでたらループを抜けるならここにif文とかいれる
> s += b.ToString("X2") + ","
> }
> listBox1.Items.Add(s);

お教えいただきました方法でうまくいきました。
本当にありがとうございました。助かりました。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -