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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? comp_reducerdict16.bas

?? 20多種VB軟件的加密與壓縮模塊
?? BAS
?? 第 1 頁 / 共 2 頁
字號:
Attribute VB_Name = "Comp_ReducerDict16"


Option Explicit

'This is a 2 run method

'this reducer works by splitting a 256 chars dictionary into sixteen
'dictionaries of 16 chars each
'it will then store the dictionary number and the position of the char
'into the output stream
'the dictnumber and position number will be translated into huffman codes
'so there will be 16 different codes to store
'the dictionary will be created on the flow.

Private Type BytePos
    Data() As Byte
    Position As Long
    Buffer As Integer
    BitPos As Integer
End Type
Private Stream(1) As BytePos    '0=control 1=BitStreams

Private Dictionary As String
Private DictCharCount(256) As Long
Private BitVal() As Integer
Private CharVal() As Integer
Private HuffDict(17) As String
Private SuperMaxCode As Long

Public Sub Compress_ReducerDynamicDict16(ByteArray() As Byte)
    Dim X As Long
    Dim Y As Long
    Dim NoMore As Boolean
    Dim Most As Long
    Dim NewFileLen As Long
    Dim Nuchar As Byte
    Dim BitsDeep As Long
    Dim ByteVal As Integer
    Call Init_DictionaryDict16
    Call MakeHuffTreeForReducerDict16(ByteArray)
    Call Init_DictionaryDict16
    For X = 0 To 17
        For Y = 1 To Len(HuffDict(X))
            Call AddBitsToStream(Stream(0), ASC(Mid(HuffDict(X), Y, 1)), 8)
        Next
    Next
'whe only read the stream and convert them to bitstreams
    For X = 0 To UBound(ByteArray)
        ByteVal = ByteArray(X)
        BitsDeep = ReducerBits(ByteVal)
        Call AddBitsToStream(Stream(0), CInt(BitVal(0, BitsDeep)), CInt(CharVal(0, BitsDeep)))
        Call AddBitsToStream(Stream(1), CInt(BitVal(BitsDeep + 1, ByteVal)), CInt(CharVal(BitsDeep + 1, ByteVal)))
    Next
'send the EOF-marker
    ByteVal = 256
    BitsDeep = ReducerBits(ByteVal)
    Call AddBitsToStream(Stream(0), CInt(BitVal(0, BitsDeep)), CInt(CharVal(0, BitsDeep)))
    Call AddBitsToStream(Stream(1), CInt(BitVal(BitsDeep + 1, ByteVal)), CInt(CharVal(BitsDeep + 1, ByteVal)))
'lets fill the leftovers
    For X = 0 To 1
        Do While Stream(X).BitPos > 0
            Call AddBitsToStream(Stream(X), 0, 1)
        Loop
    Next
'Lets restore the bounderies
    For X = 0 To 1
        ReDim Preserve Stream(X).Data(Stream(X).Position - 1)
    Next
'whe calculate the new length of the new data
    NewFileLen = 0
    For X = 0 To 1
        NewFileLen = NewFileLen + UBound(Stream(X).Data) + 1
    Next
    ReDim ByteArray(NewFileLen + 3)
'here we store the compressed data
    NewFileLen = 0
    For X = 0 To 0
        ByteArray(NewFileLen) = Int(UBound(Stream(X).Data) / &H10000) And &HFF
        NewFileLen = NewFileLen + 1
        ByteArray(NewFileLen) = Int(UBound(Stream(X).Data) / &H100) And &HFF
        NewFileLen = NewFileLen + 1
        ByteArray(NewFileLen) = UBound(Stream(X).Data) And &HFF
        NewFileLen = NewFileLen + 1
    Next
    For X = 0 To 1
        For Y = 0 To UBound(Stream(X).Data)
            ByteArray(NewFileLen) = Stream(X).Data(Y)
            NewFileLen = NewFileLen + 1
        Next
    Next
End Sub

Public Sub DeCompress_ReducerDynamicDict16(ByteArray() As Byte)
    Dim OutStream() As Byte
    Dim OutPos As Long
    Dim InposCont As Long
    Dim InContBit As Integer
    Dim InposData As Long
    Dim InDataBit As Integer
    Dim Char As Integer
    Dim Numbits As Integer
    Dim X As Long
    Dim Temp As Integer
    Dim TotBits As Integer
    Dim TelBits As Integer
    Dim DictString As String
    Dim ByteValue As Integer
    Dim BitsDeep As Integer
    ReDim OutStream(500)
    Call Init_DictionaryDict16
    ReDim BitVal(17, 255)
    ReDim CharVal(17, 255)
'inlezen header en omzetten narr huffcodes
    InposCont = 0
    InposData = 0
    InContBit = 0
'Read total of controler bytes
    For X = 0 To 2
        InposData = CLng(InposData) * 256 + ByteArray(InposCont)
        InposCont = InposCont + 1
    Next
    InposData = InposData + InposCont + 1
'read the huffman header
    For BitsDeep = 0 To 17
        TotBits = ReadBitsFromArray(ByteArray, InposCont, InContBit, 8)
        DictString = Chr(TotBits)
        TelBits = 0
        For X = 1 To TotBits
            ByteValue = ReadBitsFromArray(ByteArray, InposCont, InContBit, 8)
            TelBits = TelBits + ByteValue
            DictString = DictString & Chr(ByteValue)
        Next
        For X = 1 To TelBits
            DictString = DictString & Chr(ReadBitsFromArray(ByteArray, InposCont, InContBit, 8))
        Next
        Call Create_Huffcodes(DictString, False, BitsDeep)
    Next
'Set starting point of the compressed data
    InDataBit = 0
    OutPos = 0
    Do
        Temp = 0
        Numbits = 0
        Do While BitVal(0, Temp) <> Numbits
            Temp = Temp * 2 + ReadBitsFromArray(ByteArray, InposCont, InContBit, 1)
            Numbits = Numbits + 1
            If TelBits = 20 Then
                Err.Raise vbError, "DecompressHuffman", "We zijn de boom tot op een dood punt genaderd, waarschijnlijk is de header beschadigd"
                Exit Sub
            End If
        Loop
        Numbits = CharVal(0, Temp) + 1
        TelBits = 0
        Temp = 0
        Do While BitVal(Numbits, Temp) <> TelBits
            Temp = Temp * 2 + ReadBitsFromArray(ByteArray, InposData, InDataBit, 1)
            TelBits = TelBits + 1
            If TelBits = 20 Then
                Err.Raise vbError, "DecompressHuffman", "We zijn de boom tot op een dood punt genaderd, waarschijnlijk is de header beschadigd"
                Exit Sub
            End If
        Loop
        Char = CharVal(Numbits, Temp)
        Char = ExpanderBits(Numbits - 1, Char)
        If Char = 256 Then Exit Do
        Call AddCharToArray(OutStream, OutPos, CByte(Char))
    Loop
    ReDim ByteArray(OutPos - 1)
    For X = 0 To OutPos - 1
        ByteArray(X) = OutStream(X)
    Next
End Sub

Private Sub Init_DictionaryDict16()
    Dim X As Integer
    Dictionary = ""
    For X = 0 To 255
        Dictionary = Dictionary & Chr(X)
        DictCharCount(X) = 0
    Next
    DictCharCount(256) = 0
    For X = 0 To 1
        ReDim Stream(X).Data(500)
        Stream(X).BitPos = 0
        Stream(X).Buffer = 0
        Stream(X).Position = 0
    Next
End Sub


Private Function ReducerBits(Char As Integer) As Integer
    Dim DiPos As Integer
    If Char = 256 Then ReducerBits = 16: Char = 0: Exit Function
    DiPos = InStr(Dictionary, Chr(Char)) - 1
    Call update_Model(Char)
    ReducerBits = Int(DiPos / 16)
    Char = DiPos Mod 16
End Function

Private Function ExpanderBits(BitsNum As Integer, BytePos As Integer) As Integer
    If BitsNum = 16 And BytePos = 0 Then ExpanderBits = 256: Exit Function
    BitsNum = (BitsNum * 16) + BytePos + 1
    ExpanderBits = ASC(Mid(Dictionary, BitsNum, 1))
    Call update_Model(ExpanderBits)
End Function

Private Sub update_Model(Char As Integer)
    Dim DictPos As Integer
    Dim OldPos As Integer
    Dim Temp As Long
    DictPos = InStr(Dictionary, Chr(Char))
    OldPos = DictPos
    DictCharCount(DictPos) = DictCharCount(DictPos) + 1
    Do While DictPos > 1 And DictCharCount(DictPos) >= DictCharCount(DictPos - 1)
        Temp = DictCharCount(DictPos - 1)
        DictCharCount(DictPos - 1) = DictCharCount(DictPos)
        DictCharCount(DictPos) = Temp
        DictPos = DictPos - 1
    Loop
    If OldPos = DictPos Then Exit Sub
    Dictionary = Left(Dictionary, DictPos - 1) & Chr(Char) & Mid(Dictionary, DictPos, OldPos - DictPos) & Mid(Dictionary, OldPos + 1)
End Sub

'this sub will add an amount of bits to a sertain stream
Private Sub AddBitsToStream(Toarray As BytePos, Number As Integer, Numbits As Integer)
    Dim X As Long
    If Numbits = 8 And Toarray.BitPos = 0 Then
        If Toarray.Position > UBound(Toarray.Data) Then ReDim Preserve Toarray.Data(Toarray.Position + 500)
        Toarray.Data(Toarray.Position) = Number And &HFF
        Toarray.Position = Toarray.Position + 1
        Exit Sub
    End If
    For X = Numbits - 1 To 0 Step -1
        Toarray.Buffer = Toarray.Buffer * 2 + (-1 * ((Number And 2 ^ X) > 0))
        Toarray.BitPos = Toarray.BitPos + 1
        If Toarray.BitPos = 8 Then
            If Toarray.Position > UBound(Toarray.Data) Then ReDim Preserve Toarray.Data(Toarray.Position + 500)
            Toarray.Data(Toarray.Position) = Toarray.Buffer
            Toarray.BitPos = 0
            Toarray.Buffer = 0
            Toarray.Position = Toarray.Position + 1
        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
    If Numbits = 8 And FromBit = 0 Then
        ReadBitsFromArray = FromArray(FromPos)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲三级在线免费观看| 成人精品gif动图一区| 韩国精品久久久| 成人激情综合网站| 日韩一区和二区| 国产精品久久久久久久久动漫| 日韩电影在线观看网站| 91在线国产观看| 国产午夜三级一区二区三| 五月天丁香久久| 色悠悠久久综合| 国产精品视频九色porn| 九色porny丨国产精品| 欧美日韩成人高清| 亚洲欧美福利一区二区| 成人性生交大片| 国产午夜精品福利| 精品亚洲成a人| 欧美一级二级三级乱码| 视频一区二区三区在线| 欧美日韩精品系列| 亚洲线精品一区二区三区| 91亚洲大成网污www| 国产精品少妇自拍| 不卡电影一区二区三区| 国产女同互慰高潮91漫画| 国产一区二区不卡老阿姨| 欧美一级日韩免费不卡| 日韩精品成人一区二区三区| 欧美日韩午夜影院| 午夜一区二区三区在线观看| 91电影在线观看| 亚洲欧美日韩人成在线播放| 色婷婷精品大在线视频| 亚洲人精品一区| 在线日韩一区二区| 亚洲一区二区三区三| 欧美日韩精品久久久| 亚洲1区2区3区4区| 日韩一区二区三区四区| 国产一区视频网站| 欧美激情综合在线| 99re66热这里只有精品3直播| 日韩伦理电影网| 欧美一a一片一级一片| 亚洲午夜久久久久| 337p亚洲精品色噜噜狠狠| 久久se精品一区精品二区| 久久蜜桃香蕉精品一区二区三区| 国产精品888| 中文字幕一区二区三区av| 日本道精品一区二区三区| 亚洲第一av色| 精品久久久久久久久久久久久久久| 精品一二线国产| 国产精品第一页第二页第三页| 色婷婷综合久久久久中文| 丝袜国产日韩另类美女| 久久综合狠狠综合久久激情| 从欧美一区二区三区| 一区二区三区产品免费精品久久75| 欧美日韩dvd在线观看| 国产原创一区二区三区| 亚洲精品国产a久久久久久| 正在播放一区二区| 不卡电影一区二区三区| 午夜精品久久久久久| 久久网这里都是精品| 色狠狠色狠狠综合| 韩国av一区二区| 亚洲黄色片在线观看| 精品91自产拍在线观看一区| 99r精品视频| 免费人成在线不卡| 亚洲人成网站影音先锋播放| 日韩一级高清毛片| 色综合久久天天| 国内精品在线播放| 亚洲成人免费视| 国产精品欧美极品| 日韩免费视频一区二区| 91麻豆福利精品推荐| 国产在线视频一区二区| 亚洲v日本v欧美v久久精品| 国产婷婷色一区二区三区四区| 欧美在线短视频| 粉嫩av一区二区三区在线播放| 天天色天天操综合| 亚洲欧美日韩国产中文在线| 久久亚洲欧美国产精品乐播 | 秋霞国产午夜精品免费视频| 中文字幕中文在线不卡住| 日韩一区二区精品在线观看| 欧美亚洲综合一区| 91亚洲精品一区二区乱码| 国产91对白在线观看九色| 成人激情开心网| 老司机精品视频在线| 亚洲成人av中文| 日韩理论电影院| 国产日韩欧美不卡在线| 精品美女一区二区| 欧美精品久久一区| 在线视频观看一区| 在线中文字幕一区| 91丝袜呻吟高潮美腿白嫩在线观看| 国产乱淫av一区二区三区| 麻豆精品一二三| 蜜桃一区二区三区在线| 日韩精品亚洲一区| 日韩av午夜在线观看| 五月婷婷色综合| 日韩在线观看一区二区| 亚洲国产欧美日韩另类综合 | 日本一区二区三区国色天香| 26uuu国产在线精品一区二区| 日韩一区二区在线看| 欧美一区二区三区男人的天堂| 在线播放视频一区| 日韩视频一区二区三区在线播放| 7777女厕盗摄久久久| 欧美一级日韩一级| 精品免费国产二区三区 | 国模少妇一区二区三区| 精品一区二区三区日韩| 国产一区二区网址| 懂色av一区二区三区免费观看| 成人av午夜电影| 色一情一乱一乱一91av| 欧美日本在线播放| 日韩欧美一区二区久久婷婷| 精品国产91洋老外米糕| 欧美韩日一区二区三区| 亚洲欧洲99久久| 午夜电影一区二区三区| 激情五月婷婷综合| 成人免费视频播放| 在线精品视频小说1| 7777精品伊人久久久大香线蕉超级流畅| 欧美一区二区三区四区视频| 亚洲精品在线免费观看视频| 国产精品久久久久桃色tv| 一区二区三区欧美| 麻豆91精品视频| 9i在线看片成人免费| 777奇米成人网| 欧美国产一区在线| 一级中文字幕一区二区| 久久精品国产秦先生| 99久久久久久| 欧美一二三区在线| 中文字幕一区不卡| 全部av―极品视觉盛宴亚洲| 成人av网站在线| 欧美一卡2卡三卡4卡5免费| 中文字幕不卡三区| 日韩综合小视频| 99在线精品视频| 日韩女优av电影在线观看| 成人免费在线播放视频| 波多野结衣视频一区| 欧美日韩一区中文字幕| 国产欧美一区二区在线| 日韩中文字幕区一区有砖一区| 成人一区二区三区| 日韩欧美成人一区二区| 一区二区三区在线看| 国产一区二区剧情av在线| 欧美精品乱人伦久久久久久| 中文字幕一区二区三区视频| 久久9热精品视频| 欧美视频自拍偷拍| 1024成人网色www| 国产成人免费视频网站| 91精品国产综合久久精品| 亚洲男人电影天堂| 成人av影视在线观看| 久久精品免视看| 国产在线视频不卡二| 亚洲一二三四久久| 国产v日产∨综合v精品视频| 久久综合一区二区| 蜜臀91精品一区二区三区| 制服丝袜中文字幕亚洲| 免费高清不卡av| 国产三级一区二区三区| 国产成人午夜视频| 中日韩av电影| 色综合久久久久综合体| 亚洲激情中文1区| 884aa四虎影成人精品一区| 图片区日韩欧美亚洲| 欧美va在线播放| 成人18精品视频| 亚洲福中文字幕伊人影院| 91精品国产欧美一区二区成人| 麻豆极品一区二区三区| 国产清纯在线一区二区www| 色天使色偷偷av一区二区| 另类中文字幕网|