Mere om Blokhovedet
Før vi kan gå videre til at udforske blokhovedet i detaljer, skal vi først forstå forskellen mellem big endian og little endian formater.
Little Endian og Big Endian
Først skal vi forstå, hvad endianness faktisk betyder.
Endianness refererer til rækkefølgen, hvori bytes (hver byte svarer til 8 bits) er arrangeret inden for større datatyper i computerens hukommelse.
Big endian-format gemmer den mest betydningsfulde byte først, hvilket svarer til, hvordan mennesker typisk læser tal. Lad os bruge det decimale tal 234567890 som eksempel og konvertere det til hexadecimal og binær ved hjælp af Python og vise resultaterne:
123decimal_number = 234567890 print(hex(decimal_number)) print(bin(decimal_number))
Da computere gemmer heltal ved hjælp af et helt antal bytes, og hver 2 hex-cifre svarer til én byte, skal vi have et jævnt antal cifre. Den hexadecimale repræsentation af vores tal, 0xDFB38D2, indeholder 7 cifre, så vi skal tilføje et nul 0 til venstre. Det resulterende tal, 0x0DFB38D2, har nu 8 hex-cifre (passer præcis til 4 bytes) og samme værdi.
Tilsvarende har vores binære tal 28 bits, og hver 8 bits svarer til 1 byte, så vi skal have antallet af bits deleligt med 8 ved at tilføje 4 nuller 0 til venstre. Det resulterende tal, 0b00001101111110110011100011010010, har nu 32 bits (passer præcis til 4 bytes) og samme værdi.
Ved brug af Python fik vi big endian-formatet, hvilket vi også ville få, hvis vi konverterede manuelt, og vores tal ser således ud:
0x0DFB38D2i hex;0b00001101111110110011100011010010i binær.
Lad os se på tabellen nedenfor for at forstå big endian-formatet:
Omvendt gemmer little endian-formatet den mindst betydningsfulde byte først, hvilket vender den intuitive rækkefølge:
Som du kan se, ser vores tal i little endian-format således ud:
-
0xD238FB0Di hex; -
0b11010010001110001111101100001101i binær.
Tilbage til blokhovedet
For at opsummere er headeren præcis 80 bytes og indeholder seks datafelter, som hver især er i little endian-format. Lad os nu se nærmere på headeren for blok 645536:
Da blokhovedet optager præcis 80 bytes, er der præcis 160 hex-cifre (hver byte svarer til 2 hex-cifre). Version-feltet optager for eksempel 4 bytes, så der er 8 hex-cifre.
Her er de detaljerede oplysninger om denne blok i exploreren:
Felterne her vises i big endian-format. Lad os undersøge bits-feltet, for eksempel, og sammenligne det med dets repræsentation i blokhovedet. Dets hex-repræsentation er 0x171007ea i big endian-format:
Hvis vi konverterer det til little endian-format, vil det se således ud:
Som du kan se, er det præcis det, vi havde i blokhovedet.
1. Hvad refererer "endianness" til i forbindelse med blockchain og computersystemer?
2. Match blokkomponenter med deres definitioner.
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
Awesome!
Completion rate improved to 6.25
Mere om Blokhovedet
Stryg for at vise menuen
Før vi kan gå videre til at udforske blokhovedet i detaljer, skal vi først forstå forskellen mellem big endian og little endian formater.
Little Endian og Big Endian
Først skal vi forstå, hvad endianness faktisk betyder.
Endianness refererer til rækkefølgen, hvori bytes (hver byte svarer til 8 bits) er arrangeret inden for større datatyper i computerens hukommelse.
Big endian-format gemmer den mest betydningsfulde byte først, hvilket svarer til, hvordan mennesker typisk læser tal. Lad os bruge det decimale tal 234567890 som eksempel og konvertere det til hexadecimal og binær ved hjælp af Python og vise resultaterne:
123decimal_number = 234567890 print(hex(decimal_number)) print(bin(decimal_number))
Da computere gemmer heltal ved hjælp af et helt antal bytes, og hver 2 hex-cifre svarer til én byte, skal vi have et jævnt antal cifre. Den hexadecimale repræsentation af vores tal, 0xDFB38D2, indeholder 7 cifre, så vi skal tilføje et nul 0 til venstre. Det resulterende tal, 0x0DFB38D2, har nu 8 hex-cifre (passer præcis til 4 bytes) og samme værdi.
Tilsvarende har vores binære tal 28 bits, og hver 8 bits svarer til 1 byte, så vi skal have antallet af bits deleligt med 8 ved at tilføje 4 nuller 0 til venstre. Det resulterende tal, 0b00001101111110110011100011010010, har nu 32 bits (passer præcis til 4 bytes) og samme værdi.
Ved brug af Python fik vi big endian-formatet, hvilket vi også ville få, hvis vi konverterede manuelt, og vores tal ser således ud:
0x0DFB38D2i hex;0b00001101111110110011100011010010i binær.
Lad os se på tabellen nedenfor for at forstå big endian-formatet:
Omvendt gemmer little endian-formatet den mindst betydningsfulde byte først, hvilket vender den intuitive rækkefølge:
Som du kan se, ser vores tal i little endian-format således ud:
-
0xD238FB0Di hex; -
0b11010010001110001111101100001101i binær.
Tilbage til blokhovedet
For at opsummere er headeren præcis 80 bytes og indeholder seks datafelter, som hver især er i little endian-format. Lad os nu se nærmere på headeren for blok 645536:
Da blokhovedet optager præcis 80 bytes, er der præcis 160 hex-cifre (hver byte svarer til 2 hex-cifre). Version-feltet optager for eksempel 4 bytes, så der er 8 hex-cifre.
Her er de detaljerede oplysninger om denne blok i exploreren:
Felterne her vises i big endian-format. Lad os undersøge bits-feltet, for eksempel, og sammenligne det med dets repræsentation i blokhovedet. Dets hex-repræsentation er 0x171007ea i big endian-format:
Hvis vi konverterer det til little endian-format, vil det se således ud:
Som du kan se, er det præcis det, vi havde i blokhovedet.
1. Hvad refererer "endianness" til i forbindelse med blockchain og computersystemer?
2. Match blokkomponenter med deres definitioner.
Tak for dine kommentarer!