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

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

?? comp_huffshort16chars.bas

?? 網(wǎng)上收集的多種加密解密以及壓縮算法vb源碼。
?? BAS
?? 第 1 頁 / 共 2 頁
字號:
Attribute VB_Name = "Comp_HuffShort16Chars"


Option Explicit

'This is a 2 run method

Private BitVal() As Long
Private CharVal() As Long

Public Sub Compress_HuffShort16chars(FileArray() As Byte)
    Dim X As Long
    Dim Y As Long
    Dim Z As Long
    Dim Char As Integer
    Dim BitLen As Integer
    Dim FileLen As Long
    Dim TelBits As Long
    Dim TotBits As Long
    Dim OutStream() As Byte
    Dim TreeNodes(511, 4) As Long
    Dim BitValue(7) As Byte
    Dim ByteValue As Byte
    Dim ByteBuff As String
    Dim CalcByte As Byte
    Dim CheckSum As Integer
    Dim NumberOfNodes As Integer
    Dim OrgNumberOfNodes As Integer
    Dim PackedSize As Long
    Dim DictSize As Long
    Dim OutPutSize As Long
    Dim CharCount(16) As Long
    Dim Bits(255) As String
    Dim Nubits As String
    Dim TempBits As String
    Dim lTemp As Long
    Dim lWeight As Long
    Dim rWeight As Long
    Dim MaxWeight As Long
    Dim NowWeight As Long
    Dim lNode As Integer
    Dim rNode As Integer
    Dim StringBuffer As String
    Dim BitLens(16) As Integer
    Dim CharLens(16) As String
    Dim DictString As String
    FileLen = UBound(FileArray)
    OutPutSize = -1
    If (FileLen = 0) Then
        ReDim Preserve FileArray(2)
        FileArray(0) = 72 'H
        FileArray(1) = 69 'E
        FileArray(2) = 48 '0
        Exit Sub
    End If
'treenodes(,0)=weight
'treenodes(,1)=Character
'treenodes(,2)=LeftNode
'treenodes(,3)=RightNode
'treenodes(,4)=ParentNode
'eerst gaan we de input doorlezen op zoek naar het meest voorkomende karakter
'en laten we dan ook gelijk de checksum maar doen
    For X = 0 To UBound(FileArray)
        CharCount((FileArray(X) And &HF0) / 16) = CharCount((FileArray(X) And &HF0) / 16) + 1
        CharCount(FileArray(X) And &HF) = CharCount(FileArray(X) And &HF) + 1
        CheckSum = CheckSum Xor FileArray(X)
    Next
'nu gaan we diegene die 0 maal voorkomen verwijderen
'en gelijk maar de blaadjes aanmaken
    MaxWeight = (UBound(FileArray) + 1) * 2
    Z = -1
    For X = 0 To 16
        If CharCount(X) <> 0 Then
            Z = Z + 1
            TreeNodes(Z, 0) = CharCount(X)
            TreeNodes(Z, 1) = X
            TreeNodes(Z, 2) = -1    'leftnode
            TreeNodes(Z, 3) = -1    'rightnode
            TreeNodes(Z, 4) = -1    'parentnode
        End If
    Next
    NumberOfNodes = Z
'nu gaan we de boom samenstallen (blaadjes verbinden met de stam)
    OrgNumberOfNodes = NumberOfNodes
    For X = NumberOfNodes + 1 To 2 Step -1
        lWeight = MaxWeight * 2: rWeight = MaxWeight * 2
        For Y = 0 To NumberOfNodes + 1
            If TreeNodes(Y, 4) = -1 Then
                NowWeight = TreeNodes(Y, 0)
                If NowWeight < rWeight Or NowWeight < lWeight Then
                    If rWeight > lWeight Then
                        rWeight = NowWeight
                        rNode = Y
                    Else
                        lWeight = NowWeight
                        lNode = Y
                    End If
                End If
            End If
        Next Y
        NumberOfNodes = NumberOfNodes + 1
        TreeNodes(lNode, 4) = NumberOfNodes
        TreeNodes(rNode, 4) = NumberOfNodes
        TreeNodes(NumberOfNodes, 0) = lWeight + rWeight
        TreeNodes(NumberOfNodes, 1) = -1
        TreeNodes(NumberOfNodes, 2) = lNode
        TreeNodes(NumberOfNodes, 3) = rNode
        TreeNodes(NumberOfNodes, 4) = -1
    Next
'nu gaan we de bitsequence bepalen
'en tegelijk gaan we bereken hoe lang de gecodeerde file wordt
'en hoe groot of dat de dictionary wordt
    TotBits = 0
    For X = 0 To OrgNumberOfNodes
        Char = TreeNodes(X, 1)
        Y = X
        Z = Y
        BitLen = 0
        Do While TreeNodes(Y, 4) <> -1
            Y = TreeNodes(Y, 4)
            If TreeNodes(Y, 2) = Z Or TreeNodes(Y, 3) = Z Then
                BitLen = BitLen + 1
            Else
                MsgBox "error creating bitpatern"
                Exit Sub
            End If
            Z = Y
        Loop
        If TotBits < BitLen Then TotBits = BitLen
        BitLens(BitLen) = BitLens(BitLen) + 1
        CharLens(BitLen) = CharLens(BitLen) & Chr(Char)
        PackedSize = PackedSize + (TreeNodes(X, 0) * BitLen)
        DictSize = DictSize + 2
    Next
    PackedSize = Int(PackedSize / 8) + Abs(1 * ((PackedSize / 8) - Int(PackedSize / 8) > 0))
    DictString = Chr(TotBits)
    For X = 1 To TotBits
        DictString = DictString & Chr(BitLens(X))
    Next
    For X = 1 To TotBits
        DictString = DictString + CharLens(X)
'        Debug.Print X; " "; BitLens(X); " "; Len(CharLens(X))
    Next
    Call Create_Huffcodes(DictString, True)
'even kijken of de totale lengte van de gecomprimeerde file kleiner is dan het origineel
'en zo nee, dan de ongecomprimeerde file voorzien van header terugsturen
'    If 3 + Len(DictString) + 1 + Len(CStr(UBound(FileArray))) + 1 + PackedSize > UBound(FileArray) Then
'        ReDim Preserve FileArray(UBound(FileArray) + 3)
'        Call CopyMem(FileArray(3), FileArray(0), FileLen + 1)
'        FileArray(0) = 72
'        FileArray(1) = 69
'        FileArray(2) = 48
'        FileArray(3) = 13
'        Exit Sub
'    End If
    ReDim OutStream(3 + Len(DictString) + 1 + Len(CStr(UBound(FileArray))) + 1 + PackedSize)
'de data wordt inderdaad kleiner dus gaan we maar de header in elkaar zetten
'output as HE4 want dit is niet de standaard indeling van een huffman encoded file
    For X = 0 To 7
        BitValue(X) = 2 ^ X
    Next

'opbouw van het gecomprimeerde bestand is
'ID van de file = 3 bytes in ASC
'grootte van de dictionary = 2 bytes in HEX
'de dictionary in ASC
'   1e = ascii code
'   2e = bitcount
'   3e = bitsequence    :kan ook 4e en 5e worden
'de checksum van de te comprimeren file = 1 byte in asc
'de originele grootte van de te comprimeren file + vbcr
'de gecomprimeerde file
    Call AddASC2Array(OutStream, OutPutSize, "HE4")
    Call AddASC2Array(OutStream, OutPutSize, DictString)
    Call AddASC2Array(OutStream, OutPutSize, Chr(CheckSum))
    Call AddASC2Array(OutStream, OutPutSize, CStr(UBound(FileArray) + 1) & vbCr)
'nu gaan we de eigenlijke data coderen aan de hand van de dictionary
'GoTo einde
    TelBits = 7
    ByteValue = 0
    For X = 0 To UBound(FileArray)
        For Z = 1 To 2
            If Z = 1 Then
                CalcByte = (FileArray(X) And &HF0) / 16
            Else
                CalcByte = FileArray(X) And &HF
            End If
            For Y = CharVal(CalcByte) - 1 To 0 Step -1 'bitlengte
                If (BitVal(CalcByte) And 2 ^ Y) > 0 Then
                    ByteValue = ByteValue + BitValue(TelBits)
                End If
                TelBits = TelBits - 1
                If TelBits = -1 Then
                    OutPutSize = OutPutSize + 1
                    OutStream(OutPutSize) = ByteValue
                    TelBits = 7
                    ByteValue = 0
                End If
            Next
        Next
    Next
    If TelBits <> 7 Then
        OutPutSize = OutPutSize + 1
        OutStream(OutPutSize) = ByteValue
    End If
Einde:
    ReDim Preserve OutStream(OutPutSize)
    ReDim FileArray(OutPutSize)
    Call CopyMem(FileArray(0), OutStream(0), OutPutSize + 1)
    
End Sub

Public Sub Decompress_HuffShort16chars(FileArray() As Byte)
    Dim X As Long
    Dim Y As Long
    Dim Z As Long
    Dim TreeNodes(511, 4) As Long
    Dim DeCompressed() As Byte
    Dim Leaf(255, 1) As Byte
    Dim ByteValue As Byte
    Dim ReadByte As Integer
    Dim CalcByte As Byte
    Dim BitValue(7) As Byte
    Dim NumberOfNodes As Integer
    Dim CheckSum As Byte
    Dim TestSum As Byte
    Dim NuNode As Integer
    Dim ToNode As Integer
    Dim Char As Byte
    Dim BitLen As Byte
    Dim Bits(255) As String
    Dim TempBits As String
    Dim StringBuffer As String
    Dim TotBits As Long
    Dim TelBits As Integer
    Dim DictSize As Long
    Dim InpPos As Long
    Dim OrgLen As Long
    Dim Nulen As Long

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产婷婷精品av在线| 精品国产1区二区| 一区二区三区中文字幕精品精品| 91蜜桃网址入口| 亚洲一区二区免费视频| 欧美伊人久久大香线蕉综合69| 亚洲永久免费av| 欧美一区二区三区免费在线看 | 久久久久国产成人精品亚洲午夜 | 成人福利电影精品一区二区在线观看| 亚洲国产经典视频| 91成人免费在线| 蜜臀a∨国产成人精品| 国产欧美1区2区3区| 色婷婷一区二区三区四区| 日本亚洲一区二区| 欧美国产精品久久| 欧美精品乱码久久久久久按摩| 久久精品99国产精品日本| 国产精品久久久久一区| 欧美无乱码久久久免费午夜一区 | 蜜臂av日日欢夜夜爽一区| 久久久精品免费观看| 91成人在线免费观看| 国产在线日韩欧美| 夜夜嗨av一区二区三区中文字幕 | 在线观看一区日韩| 黄网站免费久久| 一区二区三区在线免费视频| 日韩视频一区在线观看| 成人av在线电影| 日本美女一区二区三区视频| 国产精品二三区| 精品国产免费视频| 欧美私人免费视频| 成人少妇影院yyyy| 欧美aa在线视频| 亚洲综合另类小说| 中文字幕巨乱亚洲| 精品免费国产二区三区 | 精品在线一区二区| 一区二区在线看| 中文字幕电影一区| 欧美成人一区二区三区| 欧美伊人久久久久久午夜久久久久| 国产麻豆视频一区| 免费看黄色91| 亚洲午夜电影在线观看| 国产精品久久久久久久久搜平片 | 中文字幕在线观看一区| 日韩免费性生活视频播放| 欧美色精品在线视频| 一本久道中文字幕精品亚洲嫩| 国产精品一二三在| 蜜臀av一区二区在线观看| 午夜精彩视频在线观看不卡| 亚洲黄色免费网站| 国产制服丝袜一区| 男人的j进女人的j一区| 天天免费综合色| 亚洲自拍另类综合| 亚洲美女少妇撒尿| 综合网在线视频| 国产精品乱人伦| 亚洲国产成人在线| 日本一区二区成人| 欧美高清一级片在线观看| 欧美激情在线免费观看| 久久久久久久综合日本| 久久婷婷国产综合精品青草| 欧美成人video| 精品精品欲导航| 精品国产第一区二区三区观看体验| 日韩一区二区三区三四区视频在线观看| 欧美日免费三级在线| 欧美精品电影在线播放| 91麻豆精品国产91| 日韩欧美一区二区视频| 久久综合久久综合久久| 久久久影院官网| 国产三级欧美三级日产三级99 | 日韩久久一区二区| 亚洲欧洲av一区二区三区久久| 国产精品久久99| **欧美大码日韩| 亚洲国产综合91精品麻豆| 亚洲成人手机在线| 日本美女一区二区三区| 美腿丝袜亚洲一区| 国产99精品国产| 色婷婷激情综合| 欧美乱妇一区二区三区不卡视频| 日韩欧美亚洲另类制服综合在线| 亚洲精品在线电影| 亚洲欧美综合色| 亚洲成av人片在线| 国产专区综合网| 99久久免费精品| 337p亚洲精品色噜噜| 久久久久久久久久电影| 亚洲天堂av老司机| 蜜臀av性久久久久蜜臀av麻豆| 国产成人在线视频网站| 91国产精品成人| 精品少妇一区二区| 国产精品成人在线观看| 亚洲高清在线视频| 久久精品国产久精国产| 91在线观看美女| 91精品国产综合久久婷婷香蕉| 久久久久久免费网| 亚洲图片有声小说| 国产一区 二区| 精品1区2区3区| 国产精品嫩草影院av蜜臀| 日韩精品亚洲一区二区三区免费| 国产不卡视频一区| 欧美日韩成人综合| 国产精品区一区二区三区| 青青草国产精品97视觉盛宴| 99久久综合99久久综合网站| 欧美一区二区三区在线| 中文字幕五月欧美| 激情综合一区二区三区| 欧美特级限制片免费在线观看| 国产亚洲一区字幕| 日本91福利区| 在线亚洲高清视频| 国产精品进线69影院| 久久精品国产久精国产爱| 欧美视频你懂的| 国产精品美女久久久久久久久 | 粉嫩在线一区二区三区视频| 91精品国产入口在线| 综合久久久久久| 国产精品自拍三区| 日韩精品一区在线观看| 一区二区三区国产| 北岛玲一区二区三区四区| 久久婷婷国产综合精品青草 | 国产精品久久久久久一区二区三区| 美女性感视频久久| 欧美精品在欧美一区二区少妇| 亚洲欧美色综合| 不卡的电影网站| 国产欧美日韩另类一区| 狠狠色伊人亚洲综合成人| 欧美日韩一区二区三区视频| 一二三区精品视频| 91小视频免费看| 亚洲婷婷综合久久一本伊一区 | 日本韩国视频一区二区| 国产精品私人自拍| 国产精品66部| 久久精品人人做人人综合 | 精品一区二区三区视频在线观看| 欧美精品色综合| 五月婷婷综合激情| 欧美日韩国产综合视频在线观看 | 国产一区二区免费在线| 成人激情图片网| 国产夜色精品一区二区av| 国产一区二区三区免费看| 精品少妇一区二区三区免费观看| 免费成人性网站| 精品国产乱码久久久久久夜甘婷婷| 日韩国产欧美在线观看| 日韩一二三区不卡| 狠狠狠色丁香婷婷综合久久五月| 精品免费国产二区三区| 精品一区二区久久久| 久久久久国产一区二区三区四区 | 亚洲一级二级三级| 欧美三级资源在线| 蜜臀久久99精品久久久久久9 | 69精品人人人人| 久久精品国产亚洲a| 国产午夜精品久久| 99视频超级精品| 亚洲成人免费视| 日韩精品一区二区三区视频在线观看| 免费一级欧美片在线观看| 欧美日本国产视频| 免费观看一级欧美片| 国产三区在线成人av| 91亚洲精品久久久蜜桃网站| 一区二区三区不卡视频| 欧美一区二区视频免费观看| 国产精品白丝av| 亚洲欧洲日韩综合一区二区| 欧美精品乱人伦久久久久久| 极品少妇xxxx精品少妇| 综合久久久久综合| 日韩一级片在线播放| 岛国一区二区在线观看| 亚洲一区二区三区视频在线| 精品国免费一区二区三区| 99久久综合国产精品| 日韩国产在线观看一区| 国产欧美一区二区在线观看|