Grundkurs i binär hantering
Förord
Tillverka en mapp som du kallar BinaryKurs. Ta en kopia på NotePad.exe från Windows och lägg den i BinaryKurs-mappen. Döp om den till NötPad.exe för säkerhets skull. Därefter startar du ett nytt VB projekt och sparar det direkt i BinaryKurs. Lägg upp två knappar och en Label.Innehåll
Det Ni ser här under är ett klipp från början av NötPad uppdelad i bytes. Byten skriv med Hexadecimal kod och därför måste ni förstå det hexadecimala systemet. Vi räknar normalt med basen 10, med hexadecimalt använder man basen 16.
Det betyder följande:
Siffrorna 0-9 skrivs som vanligt
10 = A
11 = B
12 = C
13 = D
14 = E
15 = F
Det högsta tal man kan skriva med en Byte är 255. Varför ?? Jo 255 är lika med FF hexa man räknar på arabiskt vis från höger till vänster.
F:et till höger är värt 15 (kolla ovan) nästa F åt vänster är värt 15 x 16 dvs 240 . (basen är 16) vilket är 240 + 15 = 255
Hade det funnits ytterligare ett eller flera F till vänster så blir dom värda 15 x 16^2 nästa 15 x16^3 osv osv. Vi nöjer oss med en Byte dvs högst FF 255
På adress 1 nedan står det 4D vad blir det decimalt ?
D är värt 13 4 :an är värd 4 x 16 dvs 64
13 + 64 = 77 4D betyder 77.
NötPad.exe från adress 0 till 340 exempel 4D står på adress 165 " 100
Adress 307 (den svarta markeringen) skall vi leka med.
Här följer ett programexempel som visar hur man kan manipulera innehållet:
Allting stämmer vi blev ju överens innan , om att 4D blev 77. Nu skall vi hämta något Binärt från NötPad. Om Ni kollar på adress 79 ovan så ser Ni att texten This program börjar där och sträcker sig 12 tecken framåt (kom ihåg 12).
Slutligen skall vi lära oss tre kommando till
FileLen(FilNamn) ger information om hur hur lång en fil är i Bytes och man behöver inta ha öppnat filen innan. LOF(#FilNummer) (Length Of File) ger info om hur hur lång en fil är i Bytes när filen är öppnad med Open For As #FileNum. Läs själva om kommandot Seek som är väldigt användbart när man trixar med binära filer för att hitta positioner.
mvh
SvenPon
Det betyder följande:
Siffrorna 0-9 skrivs som vanligt
10 = A
11 = B
12 = C
13 = D
14 = E
15 = F
Det högsta tal man kan skriva med en Byte är 255. Varför ?? Jo 255 är lika med FF hexa man räknar på arabiskt vis från höger till vänster.
F:et till höger är värt 15 (kolla ovan) nästa F åt vänster är värt 15 x 16 dvs 240 . (basen är 16) vilket är 240 + 15 = 255
Hade det funnits ytterligare ett eller flera F till vänster så blir dom värda 15 x 16^2 nästa 15 x16^3 osv osv. Vi nöjer oss med en Byte dvs högst FF 255
På adress 1 nedan står det 4D vad blir det decimalt ?
D är värt 13 4 :an är värd 4 x 16 dvs 64
13 + 64 = 77 4D betyder 77.
NötPad.exe från adress 0 till 340 exempel 4D står på adress 165 " 100
Adress 307 (den svarta markeringen) skall vi leka med.
Här följer ett programexempel som visar hur man kan manipulera innehållet:
Option Explicit
Private Sub Form_Load()
Command1.Caption = "Skriv Binärt"
Command2.Caption = "Hämta Binärt"
End Sub
Private Sub Command1_Click()
Dim FileNum, Testsiffra As Byte
FileNum = FreeFile
Testsiffra = 77
Open App.Path & "\NötPad.exe" For Binary As #FileNum
'Skriv till adress 307
Put #FileNum, 307, "Sven"
Put #FileNum, 324, Testsiffra
Close FileNum
'Om jag nu kollar med en HexEditor så kommer jag
'att finna att det står Sven på adress 307 - 310
'och talet 77 har hamnat på adress 324 som binärt 4D
'Sven börjar med binär 53 som blir 83 decimalt som
'är Ascii koden för "S"
End Sub
Allting stämmer vi blev ju överens innan , om att 4D blev 77. Nu skall vi hämta något Binärt från NötPad. Om Ni kollar på adress 79 ovan så ser Ni att texten This program börjar där och sträcker sig 12 tecken framåt (kom ihåg 12).
Private Sub Command2_Click()
Dim FileNum
'När man hämtar måste man lägga upp en buffer
'som det hämtad värdet skall ligga i
Dim Buffer As String * 12, siffra As Integer
FileNum = FreeFile
Open App.Path & "\NötPad.exe" For Binary As #FileNum
'Hämta från adress 79 , 12 tecken framåt
Get #FileNum, 79, Buffer
Get #FileNum, 324, siffra
Close FileNum
Label1 = Buffer & " " & CStr(siffra)
'Label1 kommer att innehålla
'This program 77
End Sub
Slutligen skall vi lära oss tre kommando till
FileLen(FilNamn) ger information om hur hur lång en fil är i Bytes och man behöver inta ha öppnat filen innan. LOF(#FilNummer) (Length Of File) ger info om hur hur lång en fil är i Bytes när filen är öppnad med Open For As #FileNum. Läs själva om kommandot Seek som är väldigt användbart när man trixar med binära filer för att hitta positioner.
mvh
SvenPon
0 Kommentarer