0

私はHexデータを持っています

Byte[] data = new Byte[2];
data[0]=FF;
data[1]=FF;

ここで、このデータのバイナリ表現は次のとおりです。

1111 1111 1111 1111

ここでは、ビット 0 から 11 までの整数値のみを検索します。(左から右へ)しかし、最小限の複雑さで価値を見つける方法がわかりませんか?助けてください。よろしくお願いします。

4

4 に答える 4

2

特定のビットのみが必要な場合は、ビット マスクを使用して論理 AND を適用できます。
あなたの場合、ビットマスクは0000 1111 1111 1111(ビット0から11まで)または0FFFです。

あなたは「左から右へ」と言っているので、代わりに 1111 1111 1111 0000 (FFF0) - ビット 4 から 15 までが必要かもしれません。

于 2012-09-11T11:21:54.077 に答える
1
short value = 0xFFFF;
value = value & 0x0FFF; 

この操作により、上位 4 ビットが 0 になります。val[1] = val[1] & 0x0F

于 2012-09-11T11:21:50.833 に答える
0

バイト配列を文字列に変換:

StringBuilder sb = new StringBuilder(ba.Length * 2);
foreach (byte b in ba)
{
       sb.AppendFormat("{0:x2}", b)
}
return sb.ToString();

次に、文字列を int に解析します

 int a = int.Parse("10026AB0", NumberStyles.AllowHexSpecifier);
于 2012-09-11T11:22:31.537 に答える
0

これは基本的なことです...

「16進」データはありませんが、2バイトサイズの整数です。

疑似コードで(私はC#を流暢に話せません):

int value=data[1]<<8 | data[0];
int maskedvalue=value & 4095; // bits 0..11 inclusive set

maskedvalue は、下位 11 ビットのみが設定された値を保持するようになりました。

于 2012-09-11T11:28:56.940 に答える