亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? comp_arithmetic.bas

?? 20多種VB軟件的加密與壓縮模塊
?? BAS
字號(hào):
Attribute VB_Name = "Comp_Arithmetic"


Option Explicit

'This is a 2 run method

'This is an arithmetic coder
'It works but it's its not the best one
'If you want to use it or test it don't use a testfile which
'has all the characters in it because the requered presicion
'can't be hold in a variable in VB
'if the precision was calculated on the fly, it wouldn't be a problem

Private OutStream() As Byte
Private OutPos As Long
Private OutByteBuf As Integer
Private OutBitCount As Integer
Private Bits_To_Follow As Integer
Private Const BitsToStore As Integer = 30   'at 16 bits precision is not high enough
Private Const MaxValue As Long = 2 ^ BitsToStore

Private Type CharStats
    Count As Long
    LowValue As Variant
    HighValue As Variant
    Range As Variant
End Type
    

'Dit is een arithmetic coder
Public Sub Compress_Arithmetic(ByteArray() As Byte)
    Dim TotFileLen As Long
    Dim Char(256) As CharStats
    Dim TotChars As Integer
    Dim Teller As Long
    Dim LowValue As Long
    Dim First_Qtr As Long
    Dim Half As Long
    Dim Third_Qtr As Long
    Dim HighValue As Long
    Dim RangeValue As Long
    Dim X As Long
    Dim Y As Integer
    Call Init_Arithmetic
'first whe gather statistical data
    TotFileLen = UBound(ByteArray) + 1
    For X = 0 To UBound(ByteArray)
        Char(ByteArray(X)).Count = Char(ByteArray(X)).Count + 1
    Next
    For X = 0 To 255
        If Char(X).Count > 0 Then
            TotChars = TotChars + 1
        End If
    Next
    Teller = 0
    OutStream(0) = TotChars - 1
    OutPos = 1
    For X = 0 To 255
        If Char(X).Count > 0 Then
            OutStream(OutPos) = X
            OutPos = OutPos + 1
            OutStream(OutPos) = Int(Char(X).Count / &H10000) And &HFF
            OutPos = OutPos + 1
            OutStream(OutPos) = Int(Char(X).Count / &H100) And &HFF
            OutPos = OutPos + 1
            OutStream(OutPos) = Char(X).Count And &HFF
            OutPos = OutPos + 1
            Char(X).Range = Char(X).Count / TotFileLen
            Char(X).LowValue = Teller * (1 / TotFileLen)
            Char(X).HighValue = (Char(X).LowValue + Char(X).Range)
            Teller = Teller + Char(X).Count
        End If
    Next
    LowValue = 0
    HighValue = MaxValue - 1
    Half = HighValue / 2
    First_Qtr = Half / 2
    Third_Qtr = Half + First_Qtr
    For X = 0 To UBound(ByteArray)
        RangeValue = HighValue - LowValue + 1
        HighValue = (LowValue + RangeValue * Char(ByteArray(X)).HighValue)
        LowValue = LowValue + RangeValue * Char(ByteArray(X)).LowValue
        Do
            If HighValue < Half Then
                Call Bit_Plus_Follow(0)                 '* Output 0 if in low half. *'
                LowValue = 2 * LowValue
                HighValue = 2 * HighValue + 1        '* Scale up code range.     *'
            ElseIf LowValue >= Half Then                 '* Output 1 if in high half.*'
                Call Bit_Plus_Follow(1)
                LowValue = LowValue - Half
                HighValue = HighValue - Half                     '* Subtract offset to top.  *'
                LowValue = 2 * LowValue
                HighValue = 2 * HighValue + 1                    '* Scale up code range.     *'
            ElseIf LowValue >= First_Qtr And HighValue < Third_Qtr Then            '* Output an opposite bit   *'
                Bits_To_Follow = Bits_To_Follow + 1              '* later if in middle half. *'
                LowValue = LowValue - First_Qtr                 '* Subtract offset to middle*'
                HighValue = HighValue - First_Qtr
                LowValue = 2 * LowValue
                HighValue = 2 * HighValue + 1                    '* Scale up code range.     *'
            Else                                     '* Otherwise exit loop.     *'
                Exit Do
            End If
        Loop
    Next
    Bits_To_Follow = Bits_To_Follow + 1         '* Output two bits that     *'
    If LowValue < First_Qtr Then                '* select the quarter that  *'
        Call Bit_Plus_Follow(0)
    Else                                        '* the current code range   *'
        Call Bit_Plus_Follow(1)
    End If
    Call AddBitsToOutStream(LowValue, BitsToStore)
    Do While OutBitCount > 0
        Call AddBitsToOutStream(0, 1)
    Loop
    ReDim ByteArray(OutPos - 1)
    Call CopyMem(ByteArray(0), OutStream(0), OutPos)
End Sub

Public Sub DeCompress_Arithmetic(ByteArray() As Byte)
    Dim TotFileLen As Long
    Dim InpPos As Long
    Dim InBitPos As Integer
    Dim Tjar As Integer
    Dim Char(256) As CharStats
    Dim CharPos(256) As Long
    Dim TotChars As Integer
    Dim Teller As Long
    Dim LowValue As Long
    Dim First_Qtr As Long
    Dim Half As Long
    Dim Third_Qtr As Long
    Dim HighValue As Long
    Dim RangeValue As Long
    Dim MinRange As Integer
    Dim Value As Long
    Dim SearchValue As Double
    Dim X As Long
    Dim Symbol As Byte
    TotFileLen = 0
    InpPos = 0
    OutPos = 0
    LowValue = 0
    HighValue = MaxValue - 1
    Half = HighValue / 2
    First_Qtr = Half / 2
    Third_Qtr = Half + First_Qtr
'Read used characters
    TotChars = ByteArray(InpPos) + 1
    InpPos = InpPos + 1
    For X = 1 To TotChars
        Tjar = ByteArray(InpPos)
        InpPos = InpPos + 1
        Char(Tjar).Count = ByteArray(InpPos)
        InpPos = InpPos + 1
        Char(Tjar).Count = CLng(Char(Tjar).Count) * 256 + ByteArray(InpPos)
        InpPos = InpPos + 1
        Char(Tjar).Count = CLng(Char(Tjar).Count) * 256 + ByteArray(InpPos)
        InpPos = InpPos + 1
        CharPos(X) = Tjar
        TotFileLen = TotFileLen + Char(Tjar).Count
    Next
    ReDim OutStream(TotFileLen)
    MinRange = 1
    For X = 0 To 255
        If Char(X).Count > 0 Then
            Char(X).Range = Char(X).Count / TotFileLen
            Char(X).LowValue = Teller * (1 / TotFileLen)
            Char(X).HighValue = (Char(X).LowValue + Char(X).Range)
            Teller = Teller + Char(X).Count
            If Char(X).Range < MinRange Then MinRange = Char(X).Range
        End If
    Next
    Value = ReadBitsFromArray(ByteArray, InpPos, InBitPos, BitsToStore)
    Do While OutPos < TotFileLen
        RangeValue = HighValue - LowValue + 1
        SearchValue = (Value - LowValue) / RangeValue
        For X = 1 To TotChars
            If Char(CharPos(X)).LowValue <= SearchValue And Char(CharPos(X)).HighValue > SearchValue Then
                Exit For
            End If
        Next
        Symbol = CharPos(X)
        Call AddCharToArray(OutStream, OutPos, Symbol)
        HighValue = (LowValue + RangeValue * Char(Symbol).HighValue)
        LowValue = LowValue + RangeValue * Char(Symbol).LowValue
        Do                                  '* Loop to get rid of bits. *'
            If HighValue < Half Then
                '* nothing *'                       '* Expand low half.         *'
                LowValue = 2 * LowValue
                HighValue = 2 * HighValue + 1                    '* Scale up code range.     *'
                Value = 2 * Value + ReadBitsFromArray(ByteArray, InpPos, InBitPos, 1)        '* Move in next input bit.  *'
            ElseIf LowValue >= Half Then                 '* Expand high half.        *'
                Value = Value - Half
                LowValue = LowValue - Half                      '* Subtract offset to top.  *'
                HighValue = HighValue - Half
                LowValue = 2 * LowValue
                HighValue = 2 * HighValue + 1                    '* Scale up code range.     *'
                Value = 2 * Value + ReadBitsFromArray(ByteArray, InpPos, InBitPos, 1)        '* Move in next input bit.  *'
            ElseIf (LowValue >= First_Qtr And HighValue < Third_Qtr) Then '* Expand middle half.      *'
                Value = Value - First_Qtr
                LowValue = LowValue - First_Qtr                 '* Subtract offset to middle*'
                HighValue = HighValue - First_Qtr
                LowValue = 2 * LowValue
                HighValue = 2 * HighValue + 1                    '* Scale up code range.     *'
                Value = 2 * Value + ReadBitsFromArray(ByteArray, InpPos, InBitPos, 1)        '* Move in next input bit.  *'
            Else                             '* Otherwise exit loop.     *'
                Exit Do
            End If
        Loop
    Loop
    ReDim ByteArray(OutPos - 1)
    Call CopyMem(ByteArray(0), OutStream(0), OutPos)
End Sub


Private Sub Init_Arithmetic()
    ReDim OutStream(1000)
    OutPos = 0
    OutBitCount = 0
    OutByteBuf = 0
    Bits_To_Follow = 0
End Sub


Private Sub Bit_Plus_Follow(Bit As Integer)
    Call AddBitsToOutStream(CLng(Bit), 1)                    '* Output the bit.          *'
    Do While Bits_To_Follow > 0
        Call AddBitsToOutStream(1 - Bit, 1)            '* Output bits_to_follow    *'
        Bits_To_Follow = Bits_To_Follow - 1            '* opposite bits. Set       *'
    Loop                                           '* bits_to_follow to zero.  *'
End Sub

Private Sub AddBitsToOutStream(Number As Long, Numbits As Integer)
    Dim X As Long
    For X = Numbits - 1 To 0 Step -1
        OutByteBuf = OutByteBuf * 2 + (-1 * ((Number And CDbl(2 ^ X)) > 0))
        OutBitCount = OutBitCount + 1
        If OutBitCount = 8 Then
            OutStream(OutPos) = OutByteBuf
            OutBitCount = 0
            OutByteBuf = 0
            OutPos = OutPos + 1
            If OutPos > UBound(OutStream) Then
                ReDim Preserve OutStream(OutPos + 500)
            End If
        End If
    Next
End Sub

'this function will return a value out of the amaunt of bits you asked for
Private Function ReadBitsFromArray(FromArray() As Byte, FromPos As Long, FromBit As Integer, Numbits As Integer) As Long
    Dim X As Integer
    Dim Temp As Long
    For X = 1 To Numbits
        Temp = Temp * 2 + (-1 * ((FromArray(FromPos) And 2 ^ (7 - FromBit)) > 0))
        FromBit = FromBit + 1
        If FromBit = 8 Then
            If FromPos + 1 > UBound(FromArray) Then
                Do While X < Numbits
                    Temp = Temp * 2
                    X = X + 1
                Loop
                FromPos = FromPos + 1
                Exit For
            End If
            FromPos = FromPos + 1
            FromBit = 0
        End If
    Next
    ReadBitsFromArray = Temp
End Function

'this sub will add a char into the outputstream
Private Sub AddCharToArray(Toarray() As Byte, ToPos As Long, Char As Byte)
    If ToPos > UBound(Toarray) Then ReDim Preserve Toarray(ToPos + 500)
    Toarray(ToPos) = Char
    ToPos = ToPos + 1
End Sub

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人av网站在线观看| 一区二区在线观看不卡| 免费看欧美女人艹b| 欧美日韩视频专区在线播放| 亚洲国产欧美日韩另类综合| 欧美在线观看18| 日本成人中文字幕| 精品国产乱码久久久久久免费| 国产中文字幕一区| 欧美国产精品专区| 一本大道久久精品懂色aⅴ| 亚洲制服丝袜在线| 日韩亚洲欧美高清| 成人午夜伦理影院| 一区二区三区丝袜| 日韩无一区二区| 国产1区2区3区精品美女| 亚洲日本成人在线观看| 欧美日韩色综合| 狠狠色丁香婷婷综合久久片| 中文字幕在线不卡| 3d成人动漫网站| 成人高清在线视频| 奇米影视7777精品一区二区| 欧美国产视频在线| 91精品国产福利| 成人h动漫精品一区二区| 日韩av一级电影| 国产精品欧美极品| 欧美一级生活片| 99久久亚洲一区二区三区青草| 午夜精品一区二区三区三上悠亚| wwww国产精品欧美| 一本到高清视频免费精品| 久久成人久久鬼色| 亚洲在线观看免费| 欧美极品aⅴ影院| 884aa四虎影成人精品一区| 不卡的av电影在线观看| 久久国产精品区| 亚洲综合在线视频| 国产精品天美传媒| 日韩精品一区二区三区在线播放| 91丨九色丨蝌蚪富婆spa| 韩国成人在线视频| 亚洲777理论| 亚洲精选视频免费看| 久久综合色之久久综合| 欧美日韩国产高清一区| 91在线视频观看| 国产一区二区三区在线观看免费视频| 亚洲综合成人在线| 亚洲素人一区二区| 国产精品无圣光一区二区| 精品国产乱码久久久久久蜜臀 | 亚洲欧美视频在线观看| 欧美成人免费网站| 制服视频三区第一页精品| 91浏览器打开| 99久久国产综合精品色伊| 国产精品18久久久| 国产美女av一区二区三区| 美女免费视频一区| 日韩高清国产一区在线| 亚洲成人av在线电影| 一区二区三区美女| 亚洲欧美福利一区二区| 中文字幕一区二区三区在线不卡| 久久久欧美精品sm网站| 久久综合狠狠综合久久激情| 日韩一区二区免费在线观看| 制服丝袜av成人在线看| 日韩一区和二区| 欧美一区二区三区视频在线观看| 欧美色图片你懂的| 欧美日韩黄色一区二区| 欧美日韩一区三区四区| 欧美精品日韩一区| 欧美日韩视频一区二区| 欧美精品在线一区二区三区| 欧美精品在线一区二区三区| 欧美丰满美乳xxx高潮www| 欧美精品 日韩| 日韩一区二区三区在线视频| 日韩精品中文字幕在线不卡尤物| 精品欧美一区二区三区精品久久| 精品女同一区二区| 久久久久国产免费免费| 国产精品久久久久影院亚瑟| 成人欧美一区二区三区黑人麻豆| 亚洲欧美另类久久久精品2019| 亚洲精品第1页| 日韩精品电影一区亚洲| 免费欧美日韩国产三级电影| 国产一区激情在线| 成人激情免费电影网址| 欧美性感一区二区三区| 欧美一二三在线| 国产欧美中文在线| 亚洲激情图片qvod| 蜜臀av国产精品久久久久| 国产福利一区在线| 欧美性猛交xxxx黑人交| 欧美成人video| 国产精品嫩草99a| 一区二区三区国产| 毛片av中文字幕一区二区| 国产精品一区二区久久不卡| 91视频在线看| 91麻豆精品久久久久蜜臀| 欧美精品一区二区三区高清aⅴ | 在线中文字幕不卡| 91精品综合久久久久久| 婷婷成人激情在线网| 精品亚洲成a人在线观看| 粉嫩在线一区二区三区视频| 日本高清视频一区二区| 日韩欧美国产电影| 亚洲视频一区二区免费在线观看| 亚洲一二三专区| 国产一区二区三区四区五区美女| 92精品国产成人观看免费| 91精品国产入口| 国产精品久久久久久久久快鸭 | 国产最新精品精品你懂的| 99国产欧美久久久精品| 欧美成人一级视频| 一区二区国产视频| 国产精品一区二区久激情瑜伽 | 亚洲精品午夜久久久| 久久av老司机精品网站导航| 91蝌蚪国产九色| 国产性色一区二区| 麻豆中文一区二区| 91麻豆免费观看| 久久久欧美精品sm网站| 日本中文字幕不卡| 在线影院国内精品| 亚洲丝袜精品丝袜在线| 韩国一区二区三区| 日韩一区二区三区视频在线观看| 亚洲色图另类专区| 成人黄色av网站在线| 欧美精品一区二区三区高清aⅴ| 夜夜嗨av一区二区三区四季av| 国产精品资源在线观看| 日韩午夜激情免费电影| 亚洲伦理在线精品| 国产.欧美.日韩| 久久久亚洲高清| 久久国内精品视频| 777午夜精品免费视频| 亚洲图片欧美一区| 在线观看网站黄不卡| 日韩一区在线看| 成人深夜视频在线观看| 国产婷婷色一区二区三区四区| 久久精品理论片| 日韩免费在线观看| 日本不卡视频在线观看| 91精品久久久久久久久99蜜臂| 午夜欧美在线一二页| 6080亚洲精品一区二区| 亚洲成人精品影院| 欧美日韩高清一区二区| 日韩黄色免费网站| 69p69国产精品| 久久99热狠狠色一区二区| 欧美一区二区三区白人 | 国产成人在线视频免费播放| 精品国产乱码久久久久久影片| 激情五月播播久久久精品| 日韩欧美国产午夜精品| 久久99精品久久久久久国产越南 | 91丨九色丨国产丨porny| 亚洲日本中文字幕区| 在线区一区二视频| 午夜精品久久久久久久99水蜜桃 | 久久天天做天天爱综合色| 国产资源在线一区| 国产精品免费人成网站| 99精品桃花视频在线观看| 亚洲色图一区二区三区| 欧美日韩在线精品一区二区三区激情| 五月天国产精品| 精品国产伦一区二区三区免费| 国产成人亚洲综合a∨婷婷图片 | 波多野洁衣一区| 亚洲日本在线视频观看| 欧美区在线观看| 久久成人免费网| 日韩理论在线观看| 欧美疯狂做受xxxx富婆| 国产在线乱码一区二区三区| 国产精品萝li| 91精品免费观看| 国产成人8x视频一区二区| 一区二区在线看| 精品美女一区二区三区| 99久久综合精品|