- 2009-01-04 (日) 19:29
- Programming | Study
たとえば、Color.ToArgb() で返ってくる整数値(AARRGGBB の32ビット)を成分ごとにばらしたい場合などなど。
シフト演算をしてもよいが、私のような文系人間には少しつらい。ちょうどいいことに、.NET には専用のコンバータークラスがあるのでそれを利用すればいい。
BitConverter はさまざまな型の変数を、バイト配列に変換してくれる。
たとえば、.GetBytes() に整数値を渡せば、byte を4つ格納した配列を返す。
Int32 i = /* 何らかの整数値 */;
byte[] b = BitConverter.GetBytes(i);
label1.Text = string.Format(
"{0:X2}-{1:X2}-{2:X2}-{3:X2}",
b[0], b[1], b[2], b[3]);
出力結果は、 C0-AA-F2-87 とかそんな感じになるはず。
シフト演算より面倒くさくなくていいかも。
label2.Text = string.Format(
"{0:X2}-{1:X2}-{2:X2}-{3:X2}",
(byte)( i & 0x000000FF),
(byte)((i >> 8) & 0x000000FF),
(byte)((i >> 16) & 0x000000FF),
(byte)((i >> 24) & 0x000000FF));
Delphi(とかC/C++) だったら、構造体を宣言して強引にキャストするのがスマートかな。C# でもそうなのかな。でも、なんとなく感覚的な問題だが、あまりそういうことはしたくないな。
- Newer: セミコロン ( ; ) が必要です。 行: 41 文字: 87
- Older: 補: 人権という迷信
-
daruyanagi
-
shiroica

