def encode(in_bytes):
    """Encode a string using Consistent Overhead Byte Stuffing (COBS).
    
    Input is any byte string. Output is also a byte string.
    
    Encoding guarantees no zero bytes in the output. The output
    string will be expanded slightly, by a predictable amount.
    
    An empty string is encoded to '\\x01'"""
    if isinstance(in_bytes, str):
        raise TypeError('Unicode-objects must be encoded as bytes first')
    in_bytes_mv = _get_buffer_view(in_bytes)
    final_zero = True
    out_bytes = bytearray()
    idx = 0
    search_start_idx = 0
    for in_char in in_bytes_mv:
        if in_char == b'\x00':
            final_zero = True
            out_bytes.append(idx - search_start_idx + 1)
            out_bytes += in_bytes_mv[search_start_idx:idx]
            search_start_idx = idx + 1
        else:
            if idx - search_start_idx == 0xFD:
                final_zero = False
                out_bytes.append(0xFF)
                out_bytes += in_bytes_mv[search_start_idx:idx+1]
                search_start_idx = idx + 1
        idx += 1
    if idx != search_start_idx or final_zero:
        out_bytes.append(idx - search_start_idx + 1)
        out_bytes += in_bytes_mv[search_start_idx:idx]
    return bytes(out_bytes)
def encode ( in_bytes ) : if isinstance ( in_bytes , str ) : raise TypeError ( 'Unicode-objects must be encoded as bytes first' ) in_bytes_mv = _get_buffer_view ( in_bytes ) final_zero = True out_bytes = bytearray ( ) idx = 0 search_start_idx = 0 for in_char in in_bytes_mv : if in_char == b'\x00' : final_zero = True out_bytes . append ( idx - search_start_idx + 1 ) out_bytes += in_bytes_mv [ search_start_idx : idx ] search_start_idx = idx + 1 else : if idx - search_start_idx == 0xFD : final_zero = False out_bytes . append ( 0xFF ) out_bytes += in_bytes_mv [ search_start_idx : idx + 1 ] search_start_idx = idx + 1 idx += 1 if idx != search_start_idx or final_zero : out_bytes . append ( idx - search_start_idx + 1 ) out_bytes += in_bytes_mv [ search_start_idx : idx ] return bytes ( out_bytes )
Encode a string using Consistent Overhead Byte Stuffing (COBS).
    
    Input is any byte string. Output is also a byte string.
    
    Encoding guarantees no zero bytes in the output. The output
    string will be expanded slightly, by a predictable amount.
    
    An empty string is encoded to '\\x01