1

BCD (Binary-coded-Decimal) として表される一連の値を含むファイルを読み込んでいます。これらの値は、異なるバイト長で表すことができます。

たとえば、V の値:
V= 00 08 88 88
V= 10 00 00 00 08 34 00 00
V= 11 32 22 01 11 00 00 00 00 00 00 00
: スペースは考慮されません。 、00 08 88 88 の実際の値は 00088888 です。

私の問題は、V からゼロを削除する必要があることです。
上記の解決策は次のようになります。
V= 00 08 88 88
V= 10 00 00 00 08 34
V= 11 32 22 01 11

私の問題を解決する簡単な方法の 1 つは、ゼロ以外のビットに到達するまで反復して最下位ビットから削除することです。何を指示してるんですか?

4

1 に答える 1

0

までバイトを右シフトしますMyValue AND 0x01 > 0

public byte[] ShiftRight(byte[] value, int bitcount)
{
    byte[] temp = new byte[value.Length];
    if (bitcount >= 8)
    {
        Array.Copy(value, 0, temp, bitcount / 8, temp.Length - (bitcount / 8));
    }
    else
    {
        Array.Copy(value, temp, temp.Length);
    }
    if (bitcount % 8 != 0)
    {
        for (int i = temp.Length - 1; i >= 0; i--)
        {
            temp[i] >>= bitcount % 8;
            if (i > 0)
            {
                temp[i] |= (byte)(temp[i - 1] << 8 - bitcount % 8);
            }
        }
    }
    return temp;
}

ここの別の投稿から取得したコード。

于 2013-02-26T15:03:32.553 に答える