Шестнадесетичен запис
Шестнадесетична система в биткойн, или hex: 16 знака, от 0 до 9 и от A до F, с които се записват байтовете. Научете да четете и превръщате hex.
От Dimitar Zurnov · Обновено на 4 ноември 2026
Адаптирано от Learn Me a Bitcoin на Greg Walker.
Шестнадесетичната система, или hex, е система за записване на числа с 16 знака: цифрите от 0 до 9 и буквите от A до F. Всяка hex цифра означава стойност от 0 до 15. Биткойн използва hex, за да записва байтовете, защото две hex цифри покриват точно един байт. Повечето ключове, ID-та и суровите данни в биткойн са записани в hex.
Какво означават hex цифрите?
Цифрите от 0 до 9 запазват обичайните си стойности. Буквите означават числата от 10 до 15: A е 10, B е 11, C е 12, D е 13, E е 14, а F е 15. Главните и малките букви означават едно и също, така че 1337af и 1337AF са едно и също число.
Как работят префиксите?
Префиксът показва в коя система е записано числото. 0x означава шестнадесетична, 0b двоична, а 0d десетична. Така 0x100 е 256, 0b100 е 4, а 0d100 е 100. Число без префикс е десетично, така че 100 означава сто.
Софтуерът на биткойн обикновено извежда hex без префикс. Затова хешът на блок или частният ключ се показва като низ от знаци, без 0x отпред.
Защо за байтовете се използва hex?
Един байт има 256 възможни стойности, а една hex цифра има 16. Тъй като 16 × 16 е 256, на байт са нужни точно две hex цифри. Частният ключ, който е 32 байта, е следователно 64 hex цифри:
c413a713f02ed032ab1f4229d3cdd78e301798f0fd5198e0d5609a99799f5dc9
Всяка двойка цифри е един байт, така че дължината на hex низа показва размера на данните. Поле от 4 байта винаги е 8 цифри, а 32-байтов хеш винаги е 64. Страницата за байтовете има пълния списък с размерите.
Всяка hex цифра покрива точно четири бита, което е половин байт. Затова можете да прочетете един байт на две стъпки. Байтът 10110101 се дели на 1011 и 0101. Първата част е B (11), а втората е 5, така че байтът е B5.
Как се превръща hex в десетична?
Умножете всяка цифра по степен на 16 и съберете резултатите. Най-дясната цифра се умножава по 16⁰, което е 1, защото нулевата степен на всяко число е 1. Следващата цифра вляво се умножава по 16¹, после по 16² и така нататък. Схемата показва пресмятането на 02A13B.
Десетичната система работи по същия начин. Числото 123 означава 1 × 10² + 2 × 10¹ + 3 × 10⁰, което е сто, две десетици и три единици.
Рядко ви трябва това на ръка. Python превръща hex низ с един ред:
int("02A13B", 16) # 172347
Как се превръща десетична в hex?
Делете числото на 16 отново и отново. Всеки остатък, това, което остава след делението, е една hex цифра. Първият остатък е най-малко значимата цифра. Програмистите получават остатъка с оператора %. Спрете, когато частното стане нула. Ето 6735:
6735 / 16 = 420, остатък 15 (F)
420 / 16 = 26, остатък 4
26 / 16 = 1, остатък 10 (A)
1 / 16 = 0, остатък 1
Прочетете остатъците от най-долния ред нагоре: 1, A, 4, F. Така 6735 е 1A4F в hex. В Python format(6735, "X") дава същия отговор.
Къде виждате hex в биткойн?
- Частни ключове, които са 32 байта, или 64 hex цифри. Страницата за частния ключ обяснява допустимия диапазон.
- ID-та на трансакции и хешове на блокове, също по 32 байта. Експлорърите ги показват в обратен ред на байтовете.
- Суровите трансакции и заглавията на блоковете, които Bitcoin Core извежда като един дълъг hex низ.
- Скриптове, където всеки байт е опкод или част от данни.
Как се прави това в код?
# десетична в hex, без префикс: '1a4f'
format(6735, "x")
# с префикс 0x: '0xff'
hex(255)
# hex в десетична: 6735
int("1a4f", 16)
Имайте предвид, че байтовете в hex числото не винаги са в реда, който очаквате. Числата в суровите данни се записват в little-endian, затова обърнете байтовете им, преди да прочетете стойността. Страницата за хеш функцията обяснява откъде идват 32-байтовите хешове. За системата за числа в по-голяма дълбочина вижте статията за шестнадесетичната система в английската Уикипедия.
В този раздел: Данни
Целият курс „Биткойн от нулата“
Нещо не изглежда наред? Кажете ни