Files
SWCompression/Sources/7-Zip/MsbBitReader+7z.swift
2026-02-18 12:21:57 +08:00

40 lines
958 B
Swift

// Copyright (c) 2026 Timofey Solomko
// Licensed under MIT License
//
// See LICENSE for license information
import BitByteData
extension MsbBitReader {
/// Abbreviation for "sevenZipMultiByteDecode".
func szMbd() -> Int {
self.align()
let firstByte = self.byte().toInt()
var mask = 0x80
var value = 0
for i in 0..<8 {
if firstByte & mask == 0 {
value |= ((firstByte & (mask &- 1)) << (8 * i))
break
}
value |= self.byte().toInt() << (8 * i)
mask >>= 1
}
return value
}
func defBits(count: Int) -> [UInt8] {
self.align()
let allDefined = self.byte()
let definedBits: [UInt8]
if allDefined == 0 {
definedBits = self.bits(count: count)
} else {
definedBits = Array(repeating: 1, count: count)
}
return definedBits
}
}