二进制字符串为十进制值,公式?

时间:2011-11-29 10:29:21

标签: math binary wolfram-mathematica

使用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}

使用#3输出中的字节值{70,66,67,68}获取#2输出中的int32值{1145258566}的实际数学公式是什么?

(70^4)+(66^3)+(67^2)+68 我知道这是不正确的,如果有的话,寻找正确的公式。

2 个答案:

答案 0 :(得分:4)

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

68*256^3 + 67*256^2 + 66*256 + 70

看看你提到的错误公式,我建议你阅读一下place-value notation。还要考虑如果你有一种可以存储k个不同值的变量(一个字节可以存储256个不同的值,通常通过0..255标识整数),那么这些变量中的2个可以存储{ {1}}不同的值,更一般地说,k*k = k^2个值可以存储n个不同的值。

答案 1 :(得分:3)

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