Я пытаюсь понять этот фрагмент кода, который возвращает количество нулей, к которому добавляется префикс байтового массива, но я не уверен, что такое 0x1. Поиск в Google не помогает, но я предполагаю, что 0x1
возвращает первый бит? Как они называются?
Кроме того, я знаю, что это отдельный вопрос, но я не думаю, что он требует нового потока: я не совсем понимаю, почему мы вкладываем здесь цикл, сдвигаем бит и вычитаем j из 7. Это как байт преобразован в двоичный файл?
IdLength := 32
func PrefixLen(count [IdLength]byte) int {
for i := 0; i < IdLength; i++ {
for j := 0; j < 8; j++ {
if (count[i]>>uint8(7-j))&0x1 != 0 {
return i*8 + j
}
}
}
return IdLength*8 - 1
}