[PYTHON] Generieren Sie einen Fehlerkorrekturcode, um die Datenbeschädigung mit der zfec-Bibliothek wiederherzustellen

Mit der zfec-Bibliothek habe ich versucht, einen Fehlerkorrekturcode zu generieren, der auch dann wiederhergestellt werden kann, wenn einige Daten beschädigt sind.

Bilddiagramm zur Wiederherstellung der Datenbeschädigung

Die zfec-Bibliothek verwendet den RAID-5-Algorithmus, um die Datenbeschädigung wiederherzustellen. Der Raid-5-Algorithmus kann leicht durch Lesen von hier verstanden werden. Es ist ein einfacher Mechanismus, der XOR verwendet, sodass Sie ihn leicht verstehen können.

スクリーンショット 2016-02-25 16.33.13.png

スクリーンショット 2016-02-25 16.33.19.png

スクリーンショット 2016-02-25 16.33.36.png

Funktionen der zfec Bibliothek

·früh ・ Es gibt APIs für Python, C, Haskel ・ Kann mit Char-Arrays umgehen

https://pypi.python.org/pypi/zfec

Installation

pip install zfec

Generieren Sie einen Fehlerkorrekturcode aus 2 Blöcken und überprüfen Sie ihn

スクリーンショット 2016-02-25 16.33.13.png

2DataBlock


# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
import zfec

#Fehlererkennungskorrektur
data_block1 = str('aiueo')
data_block2 = str('kakik')

#Fehlererkennungscode aus den Datenblöcken 1 und 2:Generieren Sie 3
_, _, data_block3 = zfec.Encoder(2, 3).encode([data_block1, data_block2])
print 'data block 3 is... {}'.format(data_block3)
# >>> data block 3 is... uyI}g

#Datenblock 1 und Fehlererkennungscode:Stellen Sie 3 bis 2 wieder her
_, repaired_data_block2 = zfec.Decoder(2, 3).decode([data_block1, data_block3, ], [0, 2])
assert data_block2 == repaired_data_block2

#Datenblock 2 und Fehlererkennungscode:Stellen Sie 3 zu 1 wieder her
repaired_data_block1, _ = zfec.Decoder(2, 3).decode([data_block2, data_block3, ], [1, 2])
assert data_block1 == repaired_data_block1


Generieren Sie einen Fehlerkorrekturcode aus 5 Blöcken und überprüfen Sie ihn

5DataBlock


# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
import zfec

#Fehlererkennungskorrektur
data_block1 = str('aiueo')
data_block2 = str('kakik')
data_block3 = str('ukeko')
data_block4 = str('sasis')
data_block5 = str('useso')

#Fehlererkennungscode aus den Datenblöcken 1 und 2:Generieren Sie 3
blocks = zfec.Encoder(5, 6).encode([data_block1,
                                    data_block2,
                                    data_block3,
                                    data_block4,
                                    data_block5])

ecc_block = blocks[-1]
print str('ecc block is... {}').format(ecc_block)
# >>> ecc block is... J?\j

#Datenblock 1-Stellen Sie 5 von 4 und ECC-Blöcken wieder her
repaired_blocks = zfec.Decoder(5, 6).decode([data_block1,
                                             data_block2,
                                             data_block3,
                                             data_block4,
                                             ecc_block], [0, 1, 2, 3, 5])
assert data_block5 == repaired_blocks[4]

#Datenblock 1,2,4,Stellen Sie 3 von 5 und ECC-Block wieder her
repaired_blocks = zfec.Decoder(5, 6).decode([data_block1,
                                             data_block2,
                                             data_block4,
                                             data_block5,
                                             ecc_block], [0, 1, 3, 4, 5])
assert data_block3 == repaired_blocks[2]

Recommended Posts

Generieren Sie einen Fehlerkorrekturcode, um die Datenbeschädigung mit der zfec-Bibliothek wiederherzustellen
Zusammenfassung des Bibliotheksvergleichs zum Generieren von PDF mit Python
Einstellungen zum Eingeben und Debuggen des Inhalts der Bibliothek mit VS-Code
Versuchen Sie, Titanic-Daten mit der Vorverarbeitungsbibliothek DataLiner (Anhängen) zu verarbeiten.
Versuchen Sie, Titanic-Daten mit der Vorverarbeitungsbibliothek DataLiner (Encoding) zu verarbeiten.
Versuchen Sie, Titanic-Daten mit der Vorverarbeitungsbibliothek DataLiner zu verarbeiten (Konvertierung).
Befehl zum Generieren von QR-Code
Generieren Sie mithilfe von Cabocha automatisch "IOB2-Tag-Corpus" -Lerndaten
Süchtig nach Zeichencode durch Einfügen und Extrahieren von Daten mit SQL Alchemy
Versuchen Sie, Titanic-Daten mit der Vorverarbeitungsbibliothek DataLiner (Drop) zu verarbeiten.
Code, der zufällig eine Punktzahl generiert
Umgang mit unausgeglichenen Daten
Aufblasen von Daten (Datenerweiterung) mit PyTorch
Generieren Sie gefälschte Tabellendaten mit GAN
Ich habe die Bibliothek mit Visual Studio Code installiert, konnte sie jedoch nicht importieren