2 Star 0 Fork 0

Admin/bd_sender

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
slot.go 1.20 KB
一键复制 编辑 原始数据 按行查看 历史
钟林峰 提交于 2020-03-12 15:07 +08:00 . save
package main
import (
"strconv"
"strings"
log "github.com/sirupsen/logrus"
)
func bytify(bs string) ([]byte, error) {
bits := len(bs)
if bits%8 != 0 {
rem := make([]byte, 8-bits%8)
for idx := range rem {
rem[idx] = '0'
}
rems := string(rem)
bs = bs + rems
bits = len(bs)
}
var num = bits / 8
bytes := make([]byte, num)
for i := 0; i < num; i++ {
b := bs[i*8 : (i+1)*8]
v, err := strconv.ParseUint(b, 2, 8)
if err != nil {
return nil, err
}
bytes[i] = byte(v)
}
return bytes, nil
}
// Slot slot definition
type Slot struct {
head []byte
items []item
}
// NewSlot create new slot
func NewSlot(head []byte, items []item) (*Slot, error) {
return &Slot{head, items}, nil
}
// Encode a slot
func (s *Slot) Encode(data string) ([]byte, error) {
bs := ""
for _, it := range s.items {
b, err := it.Encode(data)
if err != nil {
return []byte{}, err
}
if strings.Contains(b, "-") {
log.WithFields(log.Fields{"it": it}).Error("encode error contains invalid char")
}
bs = bs + b
}
b, err := bytify(bs)
if err != nil {
return []byte{}, err
}
return append(s.head, b...), nil
}
// Decode a slot
func (s *Slot) Decode(bytes []byte) ([]byte, error) {
return nil, nil
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/shipnet_masterclock/bd_sender.git
git@gitee.com:shipnet_masterclock/bd_sender.git
shipnet_masterclock
bd_sender
bd_sender
master

搜索帮助