将二进制数据存储在数字中的最佳方法是什么?

时间:2014-01-05 20:28:15

标签: binary ascii modular-arithmetic number-systems

我想知道是否可以将二进制数据存储在一个数字中,以及如何将大多数二进制数据存储在一个数字中。

例如,假设我想将以下文本存储在数字中:

  

Lorem ipsum dolor坐下来,精神上的精神。 Donec egestas   nunc eget rhoncus blandit。

以二进制形式,这是:

01001100 01101111 01110010 01100101 01101101 00100000 01101001 01110000 01110011 01110101 01101101 00100000 01100100 01101111 01101100 01101111 01110010 00100000 01110011 01101001 01110100 00100000 01100001 01101101 01100101 01110100 0101100 00100000 01100011 01101111 01101110 01110011 01100101 01100011 01110100 01100101 01110100 01110101 01110010 00100000 01100001 01100100 01101001 01110000 01101001 01110011 01100011 01101001 01101110 01100111 00100000 01100101 01101100 01101001 01110100 0101110 00100000 01000100 01101111 01101110 01100101 01100011 00100000 01100101 01100111 01100101 01110011 01110100 01100001 01110011 00100000 01101110 01110101 01101110 01100011 00100000 01100101 01100111 01100101 01110100 00100000 01110010 01101000 01101111 01101110 01100011 01110101 01110011 00100000 01100010 01101100 01100001 01101110 01100100 01101001 01110100 0101110 

现在,如果我将其转换为数字,我会得到:2.15146353486 * 10^16

将此转换回二进制是问题所在,我得到00000010

现在显然我不知道我在这里做什么,所以请理解这不是“为什么这不行?”问题,我要问的是,我想做的是什么,如果可以,怎么办呢?

由于二进制可以转换为ASCII或BASE-64,反之亦然,因此转换为数字和返回也应该有效。毕竟,Base64基本上是一个基于64的数字系统,而十进制数字是一个基于10的系统,而二进制是一个基于两个系统。

任何建议都将受到赞赏。

1 个答案:

答案 0 :(得分:1)

一切,只是计算机中的一切是二进制 - 零和一。

所有这一切:

  • Lorem ipsum dolor坐下来,念念......
  • 2.15146353486 * 10 ^ 16

只是人类可以理解的某些二进制数据的表示

  

现在,如果我将其转换为数字,我会得到:2.15146353486 * 10^16

一个数字,在通常的意义上表示十进制数没有与文本有关。尝试将文本表示为一个巨大的十进制数是没有意义的。

  

将此转换回二进制是问题所在,我得到00000010。

您的转换错误。当表示为整个字节(= 8位)时,十进制数字2被编码为00000010。因此,你已经省略了数字的“其余”,加上你只转换了它最重要的数字。

  

我想知道是否可以将二进制数据存储在一个数字中,以及如何将大多数二进制数据存储在一个数字中

二进制数据未存储在 a(十进制)数字中。数字只是一些二进制数据的表示(在整数通常为1,2,4或8字节的情况下)。因此,如果你改写你的问题并且更准确地问“二进制数据中可能存储的最大十进制数”,那么答案就是:只需任何数字,无论如何大,唯一限制是可用内存。