Rumah > Java > javaTutorial > Menggunakan Teknik Pengesanan Ralat Pengisian Bit Java

Menggunakan Teknik Pengesanan Ralat Pengisian Bit Java

WBOY
Lepaskan: 2023-08-29 12:33:06
ke hadapan
856 orang telah melayarinya

Menggunakan Teknik Pengesanan Ralat Pengisian Bit Java

Pemadat bit ialah teknik yang digunakan dalam sistem komunikasi data untuk mengesan dan membetulkan ralat yang mungkin berlaku semasa penghantaran data. Ia berfungsi dengan menambah bit tambahan pada data yang dihantar ke ralat bendera apabila ia berlaku.

Cara biasa untuk melaksanakan pemadat bit dalam Java ialah menggunakan bait bendera (seperti 0x7E) untuk menunjukkan permulaan dan akhir bingkai, dan bait pelarian khas (seperti 0x7D) untuk menunjukkan bahawa bait bingkai seterusnya ialah bit padding . Sebagai contoh, pengirim akan menambah bit padding sebelum setiap kejadian bait bendera dalam data yang dihantar supaya bait bendera tidak disalah anggap sebagai permulaan atau akhir bingkai pada penerima.

Berikut ialah contoh cara melaksanakan pemadat bit dalam Java -

public static byte[] bitStuff(byte[] data) {
    final byte FLAG = 0x7E;
    final byte ESCAPE = 0x7D;

    // Create a new byte array to store the stuffed data
    byte[] stuffedData = new byte[data.length * 2];

    // Keep track of the current index in the stuffed data array
    int stuffedIndex = 0;

    // Iterate through the original data
    for (int i = 0; i < data.length; i++) {
        byte b = data[i];

        // If the current byte is the flag or escape byte, stuff it
        if (b == FLAG || b == ESCAPE) {
            stuffedData[stuffedIndex++] = ESCAPE;
            stuffedData[stuffedIndex++] = (byte) (b ^ 0x20);
        } else {
            stuffedData[stuffedIndex++] = b;
        }
    }

    return stuffedData;
}
Salin selepas log masuk

Di bahagian penerima, anda boleh menggunakan konsep yang sama untuk mendapatkan semula data mentah.

public static byte[] bitUnStuff(byte[] data) {
    final byte FLAG = 0x7E;
    final byte ESCAPE = 0x7D;

    // Create a new byte array to store the unstuffed data
    byte[] unstuffedData = new byte[data.length];

    // Keep track of the current index in the unstuffed data array
    int unstuffedIndex = 0;

    // Iterate through the stuffed data
    for (int i = 0; i < data.length; i++) {
        byte b = data[i];

        // If the current byte is the escape byte, unstuff the next byte
        if (b == ESCAPE) {
            unstuffedData[unstuffedIndex++] = (byte) (data[++i] ^ 0x20);
        } else {
            unstuffedData[unstuffedIndex++] = b;
        }
    }

    return unstuffedData;
}
Salin selepas log masuk

Ini adalah contoh asas teknik pemadat bit, ia boleh dipertingkatkan untuk mengendalikan lebih banyak kes ralat dan mengesahkan data menggunakan CRC atau checksum.

Contoh

sudah tentu! Berikut ialah contoh cara menggunakan kaedah bitStuff() dan bitUnStuff() dalam program mudah -

public static void main(String[] args) {
   byte[] data = {0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x7E};  // Hello~
   byte[] stuffedData = bitStuff(data);
   System.out.println("Original Data: "+Arrays.toString(data));
   System.out.println("Stuffed Data: "+ Arrays.toString(stuffedData));

   byte[] unstuffedData = bitUnStuff(stuffedData);
   System.out.println("Unstuffed Data: "+ Arrays.toString(unstuffedData));
}
Salin selepas log masuk

Apabila anda menjalankan program ini, ia akan memanggil kaedah bitStuff() terlebih dahulu untuk mengisi data asal, dan kemudian mencetak data asal dan data yang diisi.

Kemudian ia akan memanggil kaedah bitUnStuff() untuk mendapatkan semula data asal, kemudian ia akan mencetak data yang tidak disumbat.

Contoh

Untuk contoh data yang diberikan

rreeee

Output

Anda akan mendapat output

< p>

0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x7E,
Salin selepas log masuk

Anda dapat melihat bahawa data padding mempunyai satu bait lagi 93, 30, iaitu versi padding 7E.

Anda juga boleh melihat bahawa data yang tidak diisi adalah sama dengan data asal, yang mengesahkan bahawa data itu berjaya diambil tanpa sebarang ralat.

Atas ialah kandungan terperinci Menggunakan Teknik Pengesanan Ralat Pengisian Bit Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan