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

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

?? comp_huffshort16chars.bas

?? 常用加密算法用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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲图片欧美一区| 99在线精品视频| 国产河南妇女毛片精品久久久| 99这里都是精品| 久久综合久久综合九色| 亚洲国产欧美一区二区三区丁香婷 | 久久久久久久性| 亚洲成人综合视频| av在线一区二区三区| www日韩大片| 日韩av电影天堂| 欧美色视频一区| 日韩毛片视频在线看| 风间由美一区二区av101| 日韩欧美一二区| 日本欧美一区二区| 欧美在线一二三四区| 亚洲欧美日韩国产另类专区| 国产在线一区观看| 欧美成人伊人久久综合网| 亚洲国产wwwccc36天堂| 一本大道综合伊人精品热热 | 在线观看91视频| 国产精品天美传媒| 国产一级精品在线| 亚洲精品一区二区三区影院| 久久精品国产秦先生| 91精品国产麻豆| 人禽交欧美网站| 日韩精品一区二区三区蜜臀| 麻豆91在线播放免费| 91精品福利在线一区二区三区| 午夜国产不卡在线观看视频| 欧美日精品一区视频| 午夜视频一区二区| 51精品久久久久久久蜜臀| 亚洲成av人片| 欧美一区二区视频网站| 老司机精品视频在线| 欧美成人国产一区二区| 黄色资源网久久资源365| 精品动漫一区二区三区在线观看| 国产最新精品免费| 国产精品入口麻豆原神| 色综合久久99| 亚洲成av人在线观看| 日韩午夜激情视频| 国产精品中文字幕日韩精品| 欧美国产精品一区二区| 91香蕉视频mp4| 午夜精品久久久久久久99樱桃| 欧美一级视频精品观看| 国产一区二区成人久久免费影院| 国产视频一区在线观看| 91女厕偷拍女厕偷拍高清| 午夜欧美一区二区三区在线播放 | 91小宝寻花一区二区三区| 一二三四社区欧美黄| 91精品国产日韩91久久久久久| 国产又粗又猛又爽又黄91精品| 中文字幕精品三区| 欧美性videosxxxxx| 精品一区二区三区免费| 亚洲色大成网站www久久九九| 538prom精品视频线放| 国产美女av一区二区三区| 亚洲三级在线播放| 91精品国产综合久久小美女| 国产成人a级片| 亚洲第一综合色| 国产日产欧美一区二区视频| 欧美午夜精品一区| 国产精品一区久久久久| 亚洲h精品动漫在线观看| 久久精品在这里| 欧美精品三级在线观看| 成人久久视频在线观看| 三级欧美韩日大片在线看| 亚洲成a人v欧美综合天堂| 精品福利在线导航| 91激情在线视频| 国产精品一二三四五| 亚洲福利一区二区| 国产精品成人免费在线| 日韩欧美高清dvd碟片| 久久久久99精品国产片| 欧美私模裸体表演在线观看| 国产精品亚洲一区二区三区妖精| 亚洲第一二三四区| 亚洲人成精品久久久久| 久久精品在线免费观看| 欧美zozozo| 欧美日韩精品免费| 一本色道久久综合亚洲aⅴ蜜桃 | 亚洲精品美国一| 精品国内片67194| 正在播放亚洲一区| 欧洲av在线精品| va亚洲va日韩不卡在线观看| 国产美女精品一区二区三区| 美女视频一区在线观看| 偷窥少妇高潮呻吟av久久免费| 日韩理论片一区二区| 国产精品美女久久久久久久| 久久综合九色综合欧美就去吻| 欧美精品免费视频| 精品视频1区2区3区| 在线免费观看不卡av| 91在线国产观看| 不卡的av在线播放| youjizz国产精品| 成人黄色小视频| 成人激情小说乱人伦| 国产成人亚洲综合a∨婷婷| 久久国产精品免费| 另类专区欧美蜜桃臀第一页| 日本成人在线视频网站| 色婷婷久久综合| 99久久国产综合精品色伊| av亚洲产国偷v产偷v自拍| 成人精品视频一区| 91亚洲大成网污www| 色婷婷激情综合| 欧美视频一区二区三区| 欧美日韩精品系列| 91精品国产综合久久国产大片| 欧美一区二区成人| 精品国产免费久久 | 欧美一二三四在线| 欧美成人女星排名| 久久久久国产精品人| 国产精品久久精品日日| 一区二区三区免费在线观看| 亚洲一区二区不卡免费| 日本欧美在线看| 国产精品一区二区三区99| 99re这里只有精品首页| 欧美日韩一区二区三区四区 | 中文子幕无线码一区tr| 亚洲欧美另类久久久精品2019| 亚洲自拍偷拍网站| 久久精品999| www.一区二区| 欧美日韩国产系列| 国产午夜精品在线观看| 亚洲精品大片www| 麻豆视频观看网址久久| 成人深夜视频在线观看| 欧美日韩亚洲国产综合| 久久色在线观看| 亚洲一区二区三区四区在线 | 一区二区三区国产精华| 麻豆视频观看网址久久| 99热这里都是精品| 666欧美在线视频| 亚洲欧洲日韩女同| 久久精品久久综合| 色伊人久久综合中文字幕| 日韩欧美在线网站| 亚洲免费电影在线| 国产精品69久久久久水密桃| 欧美性大战久久久| 中文字幕av一区二区三区高| av电影在线观看完整版一区二区| 制服丝袜国产精品| 亚洲欧洲韩国日本视频 | 亚洲午夜激情网页| 国产98色在线|日韩| 欧美电影影音先锋| 亚洲欧美日韩中文字幕一区二区三区 | 国产成人在线视频网站| 欧美精品在欧美一区二区少妇| 中文字幕乱码一区二区免费| 蜜桃一区二区三区在线观看| 在线观看91视频| 亚洲欧美色一区| 成人毛片老司机大片| 久久久久久久电影| 麻豆精品一区二区| 欧美久久久久久蜜桃| 亚洲精品午夜久久久| 成人精品电影在线观看| 久久色中文字幕| 狠狠色丁香久久婷婷综合_中| 欧美午夜寂寞影院| 亚洲激情中文1区| 成人av电影在线| 欧美国产日韩亚洲一区| 国产一区二区精品久久| 精品国产1区二区| 激情综合五月天| 精品日韩在线一区| 日韩成人一级片| 日韩一区二区影院| 日韩—二三区免费观看av| 欧美日韩精品三区| 婷婷久久综合九色国产成人| 欧美午夜精品免费| 舔着乳尖日韩一区| 欧美一级欧美一级在线播放|