【发布时间】:2012-09-11 03:42:49
【问题描述】:
我正在尝试将非常长的二进制字符串(通常大于 52 位)转换为数字。我不能有一个固定的前瞻窗口,因为我这样做是为了计算神经数据的 Lempel-Ziv 复杂度版本。
当我尝试转换任何长字符串时,bin2dec 会抛出二进制字符串必须为 52 位或更少的错误。
有没有办法绕过这个大小限制?
【问题讨论】:
-
您需要多少精度?最大位数是多少?
-
未知。这是一个研究项目的一部分。无论如何,我估计我需要转换最多长度为 1e6 的二进制字符串。尽可能接近它会很棒。不过我可能会遗漏一些东西,因为我注意到 ceil(log2(1e6)) 只有 20。
-
1e6 位表示 pow(2,1e6) 的值,它是大约 10^300000 的十进制值。你确定你需要处理这么大的数字(即远大于宇宙中基本粒子的数量)吗?
-
我将传递给像 dec2bin 这样的函数的字符串长度可能与 1e6 一样长。它来自每秒对一个过程进行 1e4 次采样,我预计模式将持续大约 100 秒。我使用二进制字符串的十进制值作为哈希来构建查找表以计算 LZ 复杂度。
-
您确定您使用的是
dec2bin而不是bin2dec?dec2bin将数字转换为二进制,而不是将二进制字符串转换为数字...