1
0
mirror of https://github.com/fumiama/unibase2n.git synced 2026-06-05 00:32:47 +08:00
This commit is contained in:
源文雨
2023-04-10 10:48:55 +08:00
parent d4c1be32e2
commit c98c9ec117
3 changed files with 26 additions and 15 deletions

View File

@@ -4,5 +4,8 @@
package unibase2n
// dec128blk1 for bit 1
// len(in)>0, len(in)%16==0, len(out)==len(in)/16
//
// len(in)>0, len(in)%16==0, len(out)==len(in)/16
//
//go:noescape
func dec128blk1(mask uint128be, in, out []byte)

View File

@@ -4,17 +4,29 @@
package unibase2n
// enc16blk1 for bit 1 (actual enc128blk1)
// len(in)!=0, len(out)==len(in)*16
//
// len(in)!=0, len(out)==len(in)*16
//
//go:noescape
func enc16blk1(mask uint16, in, out []byte)
// enc64blk2 for bit 2
// len(in)!=0, len(out)==len(in)*8
//
// len(in)!=0, len(out)==len(in)*8
//
//go:noescape
func enc64blk2(mask uint64, in, out []byte)
// enc32blk4 for bit 4
// len(in)!=0, len(out)==len(in)*4
//
// len(in)!=0, len(out)==len(in)*4
//
//go:noescape
func enc32blk4(mask uint32, in, out []byte)
// enc16blk8 for bit 8
// len(in)!=0, len(out)==len(in)*2
//
// len(in)!=0, len(out)==len(in)*2
//
//go:noescape
func enc16blk8(mask uint16, in, out []byte)

View File

@@ -12,11 +12,6 @@ type uint128be struct {
b uint64
}
var (
u128minusone = uint128be{0xffffffff_ffffffff, 0xffffffff_ffffffff}
u128one = uint128be{0, 1}
)
func readuint128be(b []byte) uint128be {
if len(b) < 16 {
b = append(b, make([]byte, 16-len(b))...)
@@ -31,15 +26,15 @@ func (num *uint128be) addeq(n uint128be) {
var c uint64
num.b, c = bits.Add64(num.b, n.b, 0)
num.a, _ = bits.Add64(num.a, n.a, c)
return
}
/*
func (num *uint128be) subeq(n uint128be) {
var b uint64
num.b, b = bits.Sub64(num.b, n.b, 0)
num.a, _ = bits.Sub64(num.a, n.a, b)
return
}
}*/
func (num uint128be) sub(n uint128be) (r uint128be) {
var b uint64
@@ -64,10 +59,11 @@ func (num *uint128be) shleq(c uint8) {
num.a = bout | (num.a << c)
}
/*
func (num *uint128be) andeq(n uint128be) {
num.a &= n.a
num.b &= n.b
}
}*/
func (num uint128be) and(n uint128be) (r uint128be) {
r.a = num.a & n.a
@@ -80,6 +76,7 @@ func (num *uint128be) oreq(n uint128be) {
num.b |= n.b
}
/*
func (num uint128be) or(n uint128be) (r uint128be) {
r.a = num.a | n.a
r.b = num.b | n.b
@@ -90,12 +87,11 @@ func (num uint128be) bswap() (r uint128be) {
r.a = bits.ReverseBytes64(num.b)
r.b = bits.ReverseBytes64(num.a)
return
}
}*/
func (num *uint128be) write(b []byte) {
binary.BigEndian.PutUint64(b[:8], num.a)
binary.BigEndian.PutUint64(b[8:16], num.b)
return
}
func (num uint128be) String() string {