41104のC#、A909でUSHORTデータを取得するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/3624687

  •  26-09-2019
  •  | 
  •  

質問

INT値を16ビットの符号なしCHARタイプ(USHORT)に変換しようとしています。例では、41104はUSHORTのA909ですが、C#ではコードサンプルを使用して試しました(MSDN記事のヘルプを使用して BitConverter.getBytesYöntem(UINT16)):

byte[] bytes = BitConverter.GetBytes(41104);
string bytes = BitConverter.ToString(byteArray);
//It returns "90-A0"

41104のUSHORTとしてA909値を取得するにはどうすればよいですか?

役に立ちましたか?

解決

実際、正しい(= 16進数)値はA090です。それがUSHORTであるかどうかは関係ありませんが、あなたが望むのは16進同等のものを表示することです。

あなたが提供したコードスニペットはすでにこれを行っています。 1つのバイトは「A0」です。もう1つは「90」です。注文を正しく取得する必要があります。

別の方法は、.netに仕事をさせることです

String.Format("{0:X}", 41104);

ご覧のとおり、それは実際にはデータ変換ではなく、異なる表示方法です。

他のヒント

バイトを並べ替える必要があります。

byte[] bytes = BitConverter.GetBytes(41104);
if (BitConverter.IsLittleEndian)
{    List<byte> tmp = new List<byte>();
     tmp.AddRange(bytes);
     tmp.Reverse();
     bytes = tmp.ToArray();
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top