mirror of
https://github.com/Xevion/easy7zip.git
synced 2025-12-09 02:07:06 -06:00
4.44 beta
This commit is contained in:
committed by
Kornel Lesiński
parent
804edc5756
commit
d9666cf046
29
CPP/7zip/Common/LSBFEncoder.cpp
Executable file
29
CPP/7zip/Common/LSBFEncoder.cpp
Executable file
@@ -0,0 +1,29 @@
|
||||
// LSBFEncoder.cpp
|
||||
|
||||
#include "StdAfx.h"
|
||||
|
||||
#include "LSBFEncoder.h"
|
||||
#include "Common/Defs.h"
|
||||
|
||||
namespace NStream {
|
||||
namespace NLSBF {
|
||||
|
||||
void CEncoder::WriteBits(UInt32 value, int numBits)
|
||||
{
|
||||
while(numBits > 0)
|
||||
{
|
||||
if (numBits < m_BitPos)
|
||||
{
|
||||
m_CurByte |= (value & ((1 << numBits) - 1)) << (8 - m_BitPos);
|
||||
m_BitPos -= numBits;
|
||||
return;
|
||||
}
|
||||
numBits -= m_BitPos;
|
||||
m_Stream.WriteByte((Byte)(m_CurByte | (value << (8 - m_BitPos))));
|
||||
value >>= m_BitPos;
|
||||
m_BitPos = 8;
|
||||
m_CurByte = 0;
|
||||
}
|
||||
}
|
||||
|
||||
}}
|
||||
Reference in New Issue
Block a user