Mer om Blokkhode
Sveip for å vise menyen
Før vi kan gå videre til å utforske blokkhodet i detalj, bør vi først forstå forskjellen mellom big endian og little endian formater.
Little Endian og Big Endian
Først må vi forstå hva endianness faktisk betyr.
Endianness refererer til rekkefølgen bytes (hver byte tilsvarer 8 bits) er arrangert i innenfor større datatyper i dataminnet.
Big endian-formatet lagrer den mest signifikante byten først, noe som samsvarer med hvordan mennesker vanligvis leser tall. Vi bruker desimaltallet 234567890 som et eksempel og konverterer det til heksadesimal og binær ved hjelp av Python, og viser resultatene:
123decimal_number = 234567890 print(hex(decimal_number)) print(bin(decimal_number))
Siden datamaskiner lagrer heltall ved bruk av et helt antall byte, og hver 2 heksadesimale sifre tilsvarer én byte, trenger vi et partall med sifre. Den heksadesimale representasjonen av vårt tall, 0xDFB38D2, inneholder 7 sifre, så vi må legge til null 0 til venstre. Det resulterende tallet, 0x0DFB38D2, har nå 8 heksadesimale sifre (passer nøyaktig 4 byte) og samme verdi.
Tilsvarende har vårt binære tall 28 biter, og hver 8. bit tilsvarer 1 byte, så vi må gjøre antall biter delelig med 8 ved å legge til 4 nuller 0 til venstre. Det resulterende tallet, 0b00001101111110110011100011010010, har nå 32 biter (passer nøyaktig 4 byte) og samme verdi.
Ved bruk av Python fikk vi big endian-formatet, som vi også ville fått ved manuell konvertering, og tallet vårt ser slik ut:
0x0DFB38D2i heksadesimal;0b00001101111110110011100011010010i binær.
Se på tabellen nedenfor for å forstå big endian-formatet:
Omvendt lagrer little endian-formatet den minst signifikante byten først, noe som reverserer den intuitive rekkefølgen:
Som du kan se, ser tallet vårt i little endian-format slik ut:
-
0xD238FB0Di heksadesimal; -
0b11010010001110001111101100001101i binær.
Tilbake til blokkhodet
For å oppsummere, hodet er nøyaktig 80 byte og inneholder seks datafelt, hvor hvert felt er i little endian-format. La oss nå se nærmere på hodet til blokk 645536:
Siden blokkheaderen opptar nøyaktig 80 byte, er det nøyaktig 160 heksadesimale sifre (hver byte tilsvarer 2 heksadesimale sifre). Versjonsfeltet tar for eksempel opp 4 byte, så det er 8 heksadesimale sifre.
Her er detaljert informasjon om denne blokken i utforskeren:
Feltene her vises i big endian-format. La oss undersøke bits-feltet, for eksempel, og sammenligne det med representasjonen i blokkheaderen. Den heksadesimale representasjonen er 0x171007ea i big endian-format:
Hvis vi konverterer det til little endian-format, vil det se slik ut:
Som du kan se, er det akkurat det vi hadde i blokkheaderen.
1. Hva refererer "endianness" til i sammenheng med blokkjeder og datasystemer?
2. Koble blokkkomponenter med deres definisjoner.
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
Mer om Blokkhode
Før vi kan gå videre til å utforske blokkhodet i detalj, bør vi først forstå forskjellen mellom big endian og little endian formater.
Little Endian og Big Endian
Først må vi forstå hva endianness faktisk betyr.
Endianness refererer til rekkefølgen bytes (hver byte tilsvarer 8 bits) er arrangert i innenfor større datatyper i dataminnet.
Big endian-formatet lagrer den mest signifikante byten først, noe som samsvarer med hvordan mennesker vanligvis leser tall. Vi bruker desimaltallet 234567890 som et eksempel og konverterer det til heksadesimal og binær ved hjelp av Python, og viser resultatene:
123decimal_number = 234567890 print(hex(decimal_number)) print(bin(decimal_number))
Siden datamaskiner lagrer heltall ved bruk av et helt antall byte, og hver 2 heksadesimale sifre tilsvarer én byte, trenger vi et partall med sifre. Den heksadesimale representasjonen av vårt tall, 0xDFB38D2, inneholder 7 sifre, så vi må legge til null 0 til venstre. Det resulterende tallet, 0x0DFB38D2, har nå 8 heksadesimale sifre (passer nøyaktig 4 byte) og samme verdi.
Tilsvarende har vårt binære tall 28 biter, og hver 8. bit tilsvarer 1 byte, så vi må gjøre antall biter delelig med 8 ved å legge til 4 nuller 0 til venstre. Det resulterende tallet, 0b00001101111110110011100011010010, har nå 32 biter (passer nøyaktig 4 byte) og samme verdi.
Ved bruk av Python fikk vi big endian-formatet, som vi også ville fått ved manuell konvertering, og tallet vårt ser slik ut:
0x0DFB38D2i heksadesimal;0b00001101111110110011100011010010i binær.
Se på tabellen nedenfor for å forstå big endian-formatet:
Omvendt lagrer little endian-formatet den minst signifikante byten først, noe som reverserer den intuitive rekkefølgen:
Som du kan se, ser tallet vårt i little endian-format slik ut:
-
0xD238FB0Di heksadesimal; -
0b11010010001110001111101100001101i binær.
Tilbake til blokkhodet
For å oppsummere, hodet er nøyaktig 80 byte og inneholder seks datafelt, hvor hvert felt er i little endian-format. La oss nå se nærmere på hodet til blokk 645536:
Siden blokkheaderen opptar nøyaktig 80 byte, er det nøyaktig 160 heksadesimale sifre (hver byte tilsvarer 2 heksadesimale sifre). Versjonsfeltet tar for eksempel opp 4 byte, så det er 8 heksadesimale sifre.
Her er detaljert informasjon om denne blokken i utforskeren:
Feltene her vises i big endian-format. La oss undersøke bits-feltet, for eksempel, og sammenligne det med representasjonen i blokkheaderen. Den heksadesimale representasjonen er 0x171007ea i big endian-format:
Hvis vi konverterer det til little endian-format, vil det se slik ut:
Som du kan se, er det akkurat det vi hadde i blokkheaderen.
Takk for tilbakemeldingene dine!