Двоичная строка в десятичное значение, формула? - PullRequest
1 голос
/ 29 ноября 2011

Использование Mathematica

Binary String: "FBCD"

#1
I: ImportString["FBCD", {"Binary", "Bit"}]
O: {0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, \
    0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0}

#2
I: ImportString["FBCD", {"Binary", "UnsignedInteger32"}]
O: {1145258566}

#3
I: ImportString["FBCD", {"Binary", "Byte"}]
O: {70, 66, 67, 68}

Что такое фактическая математическая формула с использованием байтовых значений {70, 66, 67, 68} на выходе # 3 для получения значения int32 {1145258566} на выходе # 2?

(70^4)+(66^3)+(67^2)+68 Я знаю, что это не правильно, ищу правильную формулу, если она есть.

Ответы [ 2 ]

4 голосов
/ 29 ноября 2011

Это

FromDigits[Reverse[{70, 66, 67, 68}], 256]

То есть 68*256^3 + 67*256^2 + 66*256 + 70.

Глядя на неправильную формулу, которую вы упомянули, я предлагаю прочитать немного о обозначении значения-места .Также подумайте о том, как, если у вас есть переменная, которая может хранить k различных значений (один байт может хранить 256 различных значений, обычно идентифицируемых целыми числами до 0..255), то 2 из этих переменных могут хранить k*k = k^2 различных значенийв более общем смысле, n из них могут хранить k^n различных значений.

3 голосов
/ 29 ноября 2011

(((68 * 256) + 67) * 256 + 66) * 256 + 70 = 1145258566

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...