// В текущей позиции начинаются данные заголовка // Пример: "\r\n000000a3 00000200 7fffffff \r\n" (всегда 31 символ) // // @param - данные // @param - текущая позиция, в которой ожидаем увидеть данные заголовка func isHeader(data []byte, startPos int) bool { values := utils.GetValues(data, startPos, headerControlCharacters) if len(values) != len(headerControlCharacters) { return false } return (bytes.Equal(values[0], beginHeaderMarker) && bytes.Equal(values[1], space) && bytes.Equal(values[2], space) && bytes.Equal(values[3], space) && bytes.Equal(values[4], endHeaderMarker)) }
// Заголовок принадлежит области с данными атрибутов блока // @param - все данные конфигурационного файла 1С func (h header) isAttributesData(data []byte) bool { if h.regionPosition == 0 { return false } const minBlockSize = 21 // второй символ в имени блока if len(data)-h.regionPosition <= minBlockSize { return false } values := utils.GetValues(data, h.regionPosition, attrsControlCharacters) return (bytes.IndexByte(values[0], 0x00) == 0 && bytes.IndexByte(values[1], 0x00) == 0 && bytes.IndexByte(values[2], 0x00) == 0 && bytes.IndexByte(values[3], 0x00) == 0) }