• 締切済み

長さ3のバイト配列

長さ3のバイト配列 0~16777215の範囲の数値がありまして byte[ ] byteArrayA =BitConverter.GetBytes(0x00); byte[ ] byteArrayB =BitConverter.GetBytes(0xffffff); で、 00-00-00 FF-FF-FF と、長さ3固定のバイト配列を返して欲しい場合はどうすればいいのでしょう? そのまんまだとINT16かINT32かで配列の個数が違ってきますよね。 INT32型でだと4個の配列になっちゃいますが、3個でいいんです。 どうしましょう?

みんなの回答

回答No.2

#include <stdio.h> int main(void) { int b = 0x12345678; b &= 0x00ffffff; //上位バイトを削除 printf("%#x\n",b); return 0; }

Passerby01
質問者

補足

0~16777215の範囲の数値がありまして 0x12345678という範囲外の数字はありません それと、00-34-56-78という結果が欲しいのではありません。 34-56-78という長さ3のものが欲しいのです。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

ぱっと思い付いた方法: 1. とりあえず INT32 で変換しておいて不要な部分を捨てる. 2. 自分で作る.

Passerby01
質問者

補足

とりあえず2で考えてみました。 int num=123; (byte)(num & 0x0000ff)); (byte)((num & 0x00ff00) >> 8)); (byte)((num & 0xff0000) >> 16)); 1.不要な部分を捨てる の方は未だどうすりゃいいのか解らずです。 他にも方法ありましたら、引き続き解答お待ちしています。