Android(Java)的一致性检查

在原始信息中添加奇偶校验位。


/**
 *   SetParity
 *   バイト列の最上位ビットにパリティ情報を付加する
 *
 *    pData      Byte()           I   バイト列
 *    intLen     Integer          I   対象の長さ
 *     pType      Integer          I   パリティ種類(0:Even 1:Od
 *
 *     戻り値 なし
 */
private static void SetParity(byte[] pData, int intLen,int pType) {

    int I;
    int J;
    int C;
    for (I = 0; I < intLen - 1; I++) {
        if (I >= pData.length) {
            break;
        }
        pData[I] = (byte) (pData[I] & Byte.MAX_VALUE);
        J = 1;
        C = (pType & 1);
        while( J >= Byte.MIN_VALUE) {
            if((pData[I] & J) != 0) {
                // ^  => VB XOR
                C = C ^ 1;
            }
            J *= 2;
        }
        if (C == 1) {
            // |  , ビットOR
            pData[I] = (byte) (pData[I] | Byte.MIN_VALUE);
        }
    }

}

检查奇偶位。


private static boolean RemoveParity(byte[] pData, int intLen, int pType) {

    int I;
    int J;
    int C;

    boolean removeParity = false;
    // 'パリティチェック
    for(I = 0; I < pData.length - 1; I++) {
        if (I >= pData.length) {
            break;
        }
        J = 1;
        // & , XOR
        C = (pType & 1);
        while (J >= Byte.MAX_VALUE + 1) {
            if ((pData[I] & J) != 0) {
                C = C ^ 1;
            }
            J *= 2;
            if (C == 1) {
                break;
            }
        }
    } //=== END for
    for(I = 0; I < intLen - 1; I++) {
        if(I >= pData.length) {
            break;
        }
        pData[I] = (byte)(pData[I] & Byte.MIN_VALUE);
    }
    removeParity = true;
    return removeParity;
}
广告
将在 10 秒后关闭
bannerAds