41104のC#、A909でUSHORTデータを取得するにはどうすればよいですか?
-
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();
}
所属していません StackOverflow