| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 | package bdsimport (    "wb/lg")func EscapeChars(src []byte) []byte {    dstLen := len(src)    for i:=1; i< len(src) -1;i++ {        b := src[i]        if b == startStopBit || b == escChar {            dstLen += 1        }    }    if dstLen == len(src) {        return src[:]    }    dst := make([]byte, dstLen)    dst[0] = 0x7e    dst[dstLen -1] = 0x7e    idx := 1    for i:=1; i< len(src) -1;i++{        b := src[i]        switch b {        case startStopBit:            dst[idx] = escChar            idx += 1            dst[idx] = startStopAdd        case escChar:            dst[idx] = escChar            idx += 1            dst[idx] = escCharAdd        default:            dst[idx] = b        }        idx += 1    }    return dst}func RestoreEscChars(src []byte) []byte {    dstLen := len(src)    for _, b := range src {        if b == escChar {            dstLen -= 1        }    }    dst := make([]byte, dstLen)    idx := 0    isEsc := false    for _, b := range src {        if isEsc {            isEsc = false            switch b {            case escCharAdd:                dst[idx] = escChar            case startStopAdd:                dst[idx] = startStopBit            default:                lg.Error("bds.restoreEscChars")            }            idx += 1            continue        }        if b == escChar {            isEsc = true        } else {            isEsc = false            dst[idx] = b            idx += 1        }    }    return dst}
 |