Mer om Blokkheader
Før vi kan gå videre til å utforske blokkhodet i detalj, må 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. La oss bruke desimaltallet 234567890 som et eksempel og konvertere det til heksadesimal og binær ved hjelp av Python og vise resultatene:
123decimal_number = 234567890 print(hex(decimal_number)) print(bin(decimal_number))
Siden datamaskiner lagrer heltall ved å bruke et helt antall byte, og hver 2 heksadesimale sifre tilsvarer én byte, trenger vi et partall antall 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 i 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 i 4 byte) og samme verdi.
Ved bruk av Python fikk vi big endian-formatet, som vi også ville fått ved manuell konvertering, og vårt tall ser slik ut:
0x0DFB38D2i heksadesimal;0b00001101111110110011100011010010i binær.
Se tabellen nedenfor for å forstå big endian-formatet:
Omvendt lagrer little endian-formatet den minst signifikante byten først, noe som gir en rekkefølge som er motsatt av det intuitive:
Som du ser, ser vårt tall 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 på hodet til blokk 645536:
Siden blokkheaderen opptar nøyaktig 80 byte, finnes 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 dets representasjon 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 blokk-komponenter 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
Awesome!
Completion rate improved to 6.25
Mer om Blokkheader
Sveip for å vise menyen
Før vi kan gå videre til å utforske blokkhodet i detalj, må 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. La oss bruke desimaltallet 234567890 som et eksempel og konvertere det til heksadesimal og binær ved hjelp av Python og vise resultatene:
123decimal_number = 234567890 print(hex(decimal_number)) print(bin(decimal_number))
Siden datamaskiner lagrer heltall ved å bruke et helt antall byte, og hver 2 heksadesimale sifre tilsvarer én byte, trenger vi et partall antall 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 i 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 i 4 byte) og samme verdi.
Ved bruk av Python fikk vi big endian-formatet, som vi også ville fått ved manuell konvertering, og vårt tall ser slik ut:
0x0DFB38D2i heksadesimal;0b00001101111110110011100011010010i binær.
Se tabellen nedenfor for å forstå big endian-formatet:
Omvendt lagrer little endian-formatet den minst signifikante byten først, noe som gir en rekkefølge som er motsatt av det intuitive:
Som du ser, ser vårt tall 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 på hodet til blokk 645536:
Siden blokkheaderen opptar nøyaktig 80 byte, finnes 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 dets representasjon 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 blokk-komponenter med deres definisjoner.
Takk for tilbakemeldingene dine!