mirror of
https://github.com/go-gitea/gitea.git
synced 2024-08-16 17:43:26 +02:00
30 lines
639 B
Go
30 lines
639 B
Go
|
package qr
|
||
|
|
||
|
import (
|
||
|
"github.com/boombuler/barcode/utils"
|
||
|
)
|
||
|
|
||
|
type errorCorrection struct {
|
||
|
rs *utils.ReedSolomonEncoder
|
||
|
}
|
||
|
|
||
|
var ec = newErrorCorrection()
|
||
|
|
||
|
func newErrorCorrection() *errorCorrection {
|
||
|
fld := utils.NewGaloisField(285, 256, 0)
|
||
|
return &errorCorrection{utils.NewReedSolomonEncoder(fld)}
|
||
|
}
|
||
|
|
||
|
func (ec *errorCorrection) calcECC(data []byte, eccCount byte) []byte {
|
||
|
dataInts := make([]int, len(data))
|
||
|
for i := 0; i < len(data); i++ {
|
||
|
dataInts[i] = int(data[i])
|
||
|
}
|
||
|
res := ec.rs.Encode(dataInts, int(eccCount))
|
||
|
result := make([]byte, len(res))
|
||
|
for i := 0; i < len(res); i++ {
|
||
|
result[i] = byte(res[i])
|
||
|
}
|
||
|
return result
|
||
|
}
|