Mer om Blockhuvud
Innan vi kan gå vidare till att utforska blockhuvudet i detalj, bör vi först förstå skillnaden mellan big endian och little endian format.
Little Endian och Big Endian
Först måste vi förstå vad endianness faktiskt innebär.
Endianness avser ordningen i vilken bytes (varje byte är lika med 8 bitar) är arrangerade inom större datatyper i datorns minne.
Big endian-formatet lagrar den mest signifikanta byten först, vilket överensstämmer med hur människor vanligtvis läser siffror. Låt oss använda det decimala talet 234567890 som exempel och konvertera det till hexadecimal och binär med Python och visa resultaten:
123decimal_number = 234567890 print(hex(decimal_number)) print(bin(decimal_number))
Eftersom datorer lagrar heltal med ett helt antal byte, och varje 2 hexadecimala siffror motsvarar en byte, behöver vi ett jämnt antal siffror. Den hexadecimala representationen av vårt tal, 0xDFB38D2, innehåller 7 siffror, så vi behöver lägga till en nolla 0 till vänster. Det resulterande talet, 0x0DFB38D2, har nu 8 hexadecimala siffror (passar exakt 4 byte) och samma värde.
På samma sätt har vårt binära tal 28 bitar, och varje 8 bitar motsvarar 1 byte, så vi behöver att antalet bitar är delbart med 8 genom att lägga till 4 nollor 0 till vänster. Det resulterande talet, 0b00001101111110110011100011010010, har nu 32 bitar (passar exakt 4 byte) och samma värde.
Med Python fick vi big endian-formatet, vilket vi också skulle få om vi konverterade manuellt, och vårt tal ser ut så här:
0x0DFB38D2i hexadecimal;0b00001101111110110011100011010010i binär.
Låt oss titta på tabellen nedan för att förstå big endian-formatet:
Omvänt lagrar little endian-formatet den minst signifikanta byten först, vilket innebär att den intuitiva ordningen vänds:
Som du kan se ser vårt tal ut på följande sätt i little endian-format:
-
0xD238FB0Di hex; -
0b11010010001110001111101100001101i binär form.
Tillbaka till blockhuvudet
Sammanfattningsvis är headern exakt 80 byte och innehåller sex datafält, där varje fält är i little endian-format. Låt oss nu titta på headern för block 645536:
Eftersom blockhuvudet upptar exakt 80 byte, finns det exakt 160 hexadecimala siffror (varje byte motsvarar 2 hexadecimala siffror). Version-fältet, till exempel, upptar 4 byte, vilket innebär 8 hexadecimala siffror.
Här är detaljerad information om detta block i explorern:
Fälten här visas i big endian-format. Låt oss undersöka bits-fältet, till exempel, och jämföra det med dess representation i blockhuvudet. Dess hexadecimala representation är 0x171007ea i big endian-format:
Om vi konverterar det till little endian-format kommer det att se ut så här:
Som du kan se, är det exakt vad vi hade i blockhuvudet.
1. Vad avser "endianness" i samband med blockchain och datorsystem?
2. Matcha blockkomponenter med deras definitioner.
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
Awesome!
Completion rate improved to 6.25
Mer om Blockhuvud
Svep för att visa menyn
Innan vi kan gå vidare till att utforska blockhuvudet i detalj, bör vi först förstå skillnaden mellan big endian och little endian format.
Little Endian och Big Endian
Först måste vi förstå vad endianness faktiskt innebär.
Endianness avser ordningen i vilken bytes (varje byte är lika med 8 bitar) är arrangerade inom större datatyper i datorns minne.
Big endian-formatet lagrar den mest signifikanta byten först, vilket överensstämmer med hur människor vanligtvis läser siffror. Låt oss använda det decimala talet 234567890 som exempel och konvertera det till hexadecimal och binär med Python och visa resultaten:
123decimal_number = 234567890 print(hex(decimal_number)) print(bin(decimal_number))
Eftersom datorer lagrar heltal med ett helt antal byte, och varje 2 hexadecimala siffror motsvarar en byte, behöver vi ett jämnt antal siffror. Den hexadecimala representationen av vårt tal, 0xDFB38D2, innehåller 7 siffror, så vi behöver lägga till en nolla 0 till vänster. Det resulterande talet, 0x0DFB38D2, har nu 8 hexadecimala siffror (passar exakt 4 byte) och samma värde.
På samma sätt har vårt binära tal 28 bitar, och varje 8 bitar motsvarar 1 byte, så vi behöver att antalet bitar är delbart med 8 genom att lägga till 4 nollor 0 till vänster. Det resulterande talet, 0b00001101111110110011100011010010, har nu 32 bitar (passar exakt 4 byte) och samma värde.
Med Python fick vi big endian-formatet, vilket vi också skulle få om vi konverterade manuellt, och vårt tal ser ut så här:
0x0DFB38D2i hexadecimal;0b00001101111110110011100011010010i binär.
Låt oss titta på tabellen nedan för att förstå big endian-formatet:
Omvänt lagrar little endian-formatet den minst signifikanta byten först, vilket innebär att den intuitiva ordningen vänds:
Som du kan se ser vårt tal ut på följande sätt i little endian-format:
-
0xD238FB0Di hex; -
0b11010010001110001111101100001101i binär form.
Tillbaka till blockhuvudet
Sammanfattningsvis är headern exakt 80 byte och innehåller sex datafält, där varje fält är i little endian-format. Låt oss nu titta på headern för block 645536:
Eftersom blockhuvudet upptar exakt 80 byte, finns det exakt 160 hexadecimala siffror (varje byte motsvarar 2 hexadecimala siffror). Version-fältet, till exempel, upptar 4 byte, vilket innebär 8 hexadecimala siffror.
Här är detaljerad information om detta block i explorern:
Fälten här visas i big endian-format. Låt oss undersöka bits-fältet, till exempel, och jämföra det med dess representation i blockhuvudet. Dess hexadecimala representation är 0x171007ea i big endian-format:
Om vi konverterar det till little endian-format kommer det att se ut så här:
Som du kan se, är det exakt vad vi hade i blockhuvudet.
1. Vad avser "endianness" i samband med blockchain och datorsystem?
2. Matcha blockkomponenter med deras definitioner.
Tack för dina kommentarer!