【问题标题】:What is the best way to store binary data in a number?将二进制数据存储在数字中的最佳方法是什么?
【发布时间】:2014-01-23 04:40:33
【问题描述】:

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

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

Lorem ipsum dolor sit amet,consectetur adipiscing elit。多内克埃斯塔斯 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 的系统,而二进制是基于 2 的系统。

任何建议将不胜感激。

【问题讨论】:

  • @OndrejTucny ,我认为这不能回答问题或证明近距离投票是合理的。我知道二进制是什么,我的问题更具体。
  • 你的问题表明你有,不幸的是,根本不知道它是如何工作的......另外,顺便说一句。 cmets 不是答案。
  • 根据您选择的语言,您将拥有不同的变量类型,它们有自己的上限。超过这些,您将丢失数据,或使程序崩溃。那么,自然而然,数据就会丢失,无法通过反向操作返回。

标签: binary ascii modular-arithmetic number-systems


【解决方案1】:

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

所有这些:

  • Lo​​rem ipsum dolor sit amet, consectetur…
  • 2.15146353486 * 10^16

只是一些二进制数据块的人类可理解的表示。

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

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

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

您的转换错误。十进制数字 2 表示为一个完整字节(=8 位)时,编码为00000010。因此,您省略了数字的“其余部分”,并且只转换了它的最高有效位。

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

二进制数据不存储在一个(十进制)数字中。数字只是一些二进制数据块的表示(如果是整数,通常是 1、2、4 或 8 个字节)。因此,如果您重新表述您的问题并更正确地问“二进制数据中可能存储的最大十进制数是多少”,答案将是:只是 any 数字,无论如何大,唯一的限制是可用内存。

【讨论】:

  • 做得很好。不是我的问题,我理解为什么 OP 不能让它做他们想做的事,但我无法用有意义的语言表达。
猜你喜欢
  • 2013-10-20
  • 2016-04-26
  • 2011-03-06
  • 1970-01-01
  • 1970-01-01
  • 2011-05-24
  • 1970-01-01
  • 1970-01-01
  • 2016-08-09
相关资源
最近更新 更多