Les Snippets

Connexion

Formatter un tableau d'octets comme dans un éditeur hexadécimal

Niveau requis pour utiliser/comprendre cette source : 1 ( Débutant )
Créé le 04/01/2007 21:41:13 et initié par ShareVB [Liste]
Vue : 6281
Catégorie(s) : Trucs & Astuces, Algorithme, Chaîne de caractères
Langages dispo pour ce code :
- VB6
- Voir tous les langages pour ce code snippet



Langage : VB6
Date ajout : 04/01/2007
Posté par ShareVB [Liste]
'affiche un tableau d'octets sous forme hexadécimale sur dwDigitPerRow colonnes suivi de la représentation ASCII
'===============================================================================================================
'buff : tableau contenant les octets à afficher
'OPT dwDigitPerRow : indique le nombre de colonnes hexadécimales par lignes affichées. 16 par défaut.
'OPT bAscii : indique si l'on affiche la représentation ASCII des octets après l'hexadécimal. True par défaut
'renvoie une chaine multiligne
Private Function ViewAsHexa(buff() As Byte, Optional ByVal dwDigitPerRow As Long = 16, Optional ByVal bAscii As Boolean = True) As String
'valeur de retour
Dim strHexa As String
'compteurs
Dim i As Long, j As Long
'nombre de colonnes restantes après les lignes entières
Dim iMod As Long
'nombre de lignes entières
Dim iDiv As Long
'taille des données à afficher
Dim cbBuff As Long
On Error GoTo Fin
cbBuff = UBound(buff) + 1
iDiv = cbBuff \ dwDigitPerRow
iMod = cbBuff Mod dwDigitPerRow
'pour chaque ligne entière
For i = 0 To iDiv - 1
    'pour chaque colonne d'une ligne
    For j = 0 To dwDigitPerRow - 1
        'afficher en hexa sur deux caractères
        strHexa = strHexa & Right$("00" & Hex$(buff(i * dwDigitPerRow + j)), 2) & " "
    Next
    'si affichage ASCII après l'hexa
    If bAscii Then
        'pour chaque octet de la ligne
        For j = 0 To dwDigitPerRow - 1
            Select Case buff(i * dwDigitPerRow + j)
                'affiche les caractères imprimables
                Case 32 To 126
                    strHexa = strHexa & Chr$(buff(i * dwDigitPerRow + j))
                'sinon un point
                Case Else
                    strHexa = strHexa & "."
            End Select
        Next
    End If
    'passe à la ligne suivante
    strHexa = strHexa & vbCrLf
Next
'affiche la dernière ligne non complète
For i = iDiv * dwDigitPerRow To iDiv * dwDigitPerRow + iMod - 1
    strHexa = strHexa & Right$("00" & Hex$(buff(i)), 2) & " "
Next
'complète la ligne pour aligner l'affichage ASCII avec les lignes supérieures
For i = 0 To 16 - iMod - 1
    strHexa = strHexa & "   "
Next
'affichage ASCII si nécessaire
If bAscii Then
    'pour chaque caractère de la dernière ligne
    For i = iDiv * dwDigitPerRow To iDiv * dwDigitPerRow + iMod - 1
        Select Case buff(i)
            'affiche les caractères imprimables
            Case 32 To 126
                strHexa = strHexa & Chr$(buff(i))
            'sinon un point
            Case Else
                strHexa = strHexa & "."
        End Select
    Next
End If
ViewAsHexa = strHexa
Fin:
End Function


Snippets en rapport avec : Tableau, Ascii, Hexadécimal, Formattage, Tampon



Codes sources en rapport avec : Tableau, Ascii, Hexadécimal, Formattage, Tampon

{Visual Basic, VB6, VB.NET, VB 2005} TABLEAU ASCII - RETROUVER FACILEMENT LE CODE ASCII D'UN CARACTÈRE ET INVERSEMENT
Ce projet est un petit tableau ASCII allant du code 0 à 255. On peux regarder rapidement dans le t...

{Visual Basic, VB6, VB.NET, VB 2005} COMPRESSION
Fonction pour comprimer un tableau de byte...

{Visual Basic, VB6, VB.NET, VB 2005} ASCII KONVERTOR
Pour obtenir les codes d'un caractère en hexa, decimal et octal (pas trouvé pr binaire, pas chrché ...

{Visual Basic, VB6, VB.NET, VB 2005} [VB6] TRANSMETTRE UN TABLEAU PAR PROCÉDURE
Tout le monde connait les tableaux... Depuis toujours je pensais qu'il n'été pas possible de les ...

{Visual Basic, VB6, VB.NET, VB 2005} SUPPRIMER UN ITEM DANS UN TABLEAU EN LE PARCOURANT UNE SEULE FOIS
il s'agit d'une itération permettant de supprimer un élément d'un tableau ne se trouvant pas à la fi...

{Visual Basic, VB6, VB.NET, VB 2005} CONVERTISSEUR DÉCIMAL BINAIRE HEXADÉCIMAL OCTAL
Convertit en temps réel des nombres décimaux, binaires, hexadécimaux et octaux. Le code fourni s...

{Visual Basic, VB6, VB.NET, VB 2005} FACTURE CLASSIQUE POUR DÉBUTANTS
bonjour tout le monde J'ai développé ce source pour montrer comment utiliser les fonction Lostfocus...

{Flash} AS3-ASCIITEXTENCRYPTOR - CRYPTAGE / DÉCRYPTAGE DE TEXTE ASCII (CS4)
Introduction à l'encodage de texte au format ASCII avec code commenté et fonctions flexible. Tout es...

{JAVA / J2EE} STRING TO (STRING) HEXA
Rien de bien méchant, mais c'est toujours utile de pouvoir avoir la valeur des caractères d'un strin...

{Visual Basic, VB6, VB.NET, VB 2005} LE SUIVI DE SON COMPTE BANCAIRE
Suivi de son compte bancaire Pas de catégorie infinies Impression listing par mois Statistique...