16進データをsigned int/decimalに変換しようとしていますが、何が間違っているのか分かりません。バイナリをsigned int/decimalに変換する
-2
にするにはFE
が必要です。
私はConvert.ToInt32(fields[10], 16)
を使用していますが、-2
の代わりに254
を取得しています。
ご協力いただければ幸いです。
16進データをsigned int/decimalに変換しようとしていますが、何が間違っているのか分かりません。バイナリをsigned int/decimalに変換する
-2
にするにはFE
が必要です。
私はConvert.ToInt32(fields[10], 16)
を使用していますが、-2
の代わりに254
を取得しています。
ご協力いただければ幸いです。
int
は32ビット幅なので、0xFEのは実際int
の空間254に等しい、Convert.ToInt32(string, int)
の目的のため0x000000FEとして解釈されます。
符号付きバイト範囲の値で作業したいので、代わりにConvert.ToSByte(string, int)
を使用してください(byte
はデフォルトでは符号なしなので、代わりにsbyte
タイプが必要です)。
Convert.ToSByte("FE",16)
完璧!どうもありがとうございます!!! – StarScr3am77
は符号付きバイトとして値を解釈:
sbyte value = Convert.ToSByte("FE", 16); //-2
まあInt32
の境界がある-2あなたは128の上にラップアラウンドを行いたい場合には147 483 648 147 483 647 2にそうFE
マッチ254
、最もエレガントな解決策は、符号付きバイト(sbyte
)を使用にproablyです:あなたが ``に-2` FE`をオンにしたい理由
csharp> Convert.ToSByte("FE",16);
-2
あなたの代わりに '254'とどのようにyのことを知っているのを説明できます'254'の代わりに' -2'を得る必要がありますか? –
私が働いている人は、署名された価値を見たいと思っています。理由は分かりませんが、それは要求されたものです。しかしそれは可能です。このリンクはJavaScriptで行います。 http://www.free-test-online.com/binary/signed_converter.html – StarScr3am77
これは符号付きint小数点ではありません。そのようにしたい場合は、符号付きバイトです。 –