mirror of
https://github.com/tsolomko/SWCompression.git
synced 2026-06-23 14:56:41 +00:00
40 lines
958 B
Swift
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
|
|
}
|
|
|
|
}
|