2

int 値を 16 ビットの unsigned char 型 (USHORT) に変換しようとしています。例では、41104 は ushort では A909 ですが、C# では (MSDN の記事BitConverter.GetBytes Yöntem (UInt16)の助けを借りて) 次のようにコード サンプルを試しました。

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

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

4

2 に答える 2

2

実際、正しい (=16 進数) 値は A090 です。ushort かどうかは関係ありません。必要なのは、16 進数に相当するものを表示することです。

あなたが提供したコードスニペットはすでにこれを行っています。1 バイトは「A0」、もう 1 バイトは「90」です。あなたはちょうど正しい順序を取得する必要があります.

もう 1 つの方法は、.NET に任せることです。

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

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

于 2010-09-02T07:47:26.080 に答える
1

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

byte[] bytes = BitConverter.GetBytes(41104);
if (BitConverter.IsLittleEndian)
{    List<byte> tmp = new List<byte>();
     tmp.AddRange(bytes);
     tmp.Reverse();
     bytes = tmp.ToArray();
}
于 2010-09-02T07:59:11.653 に答える