Как Ruby обрабатывает байты/двоичный файл?

Сначала напишите 47 дважды, (вам нравится Агент 47 , верно?), Оставляя пробелы, как показано (каждая черта - это слот для одной цифры. Сначала 2 слота, затем 4)

--47----47

Думаю, у вас есть 12 в руке (потому что 12 = дюжина). Умножьте его на 4, первую цифру номера агента 47, то есть 47, и поместите результат справа от первой пары, которая у вас уже есть

12 * 4 = 48
--4748--47 <-- after placing 48 to the right of first 47

Затем умножьте 12 на 3 (чтобы сделать вторую цифру номера Агента 47, то есть 7, вам нужно 7 - 4 = 3) и поместить результат справа от первых 2 пар, последней пары слотов

12 * 3 = 36
--47483647 <-- after placing 36 to the right of first two pairs

Наконец, перетащите цифры одну за другой из вашей руки, начиная с самой правой цифры (в данном случае 2), и поместите их в первое пустое место, которое вы получите

2-47483647 <-- after placing 2
2147483647 <-- after placing 1

Вот оно! Для отрицательного предела вы можете думать об этом как о 1 больше в абсолютном значении , чем положительном пределе.

Попрактикуйтесь несколько раз, и вы освоите это!

10
задан Jenny 28 July 2009 в 12:42
поделиться

2 ответа

Не знаю, помогает ли это достаточно, но вы можете индексировать биты целого числа в рубине.

n = 0b010101

n # => 21

n = 21

n[0]  # => 1
n[1]  # => 0
n[2]  # => 1
n[3]  # => 0
n[4]  # => 1
n[5]  # => 0
14
ответ дан 3 December 2019 в 14:34
поделиться

Взгляните на метод String.unpack . Это пример:

str = "1010"
str.unpack("cccc")
=> [49, 48, 49, 48]

Это даст вам целые значения. Есть другие способы выполнить преобразование.

9
ответ дан 3 December 2019 в 14:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: