如何按顺序压缩 256^3 个唯一数据点。每个数据点都是 1 到 255 之间的值

How to compress 256^3 unique data points in order. Each data point is a value from 1 to 255

提问人:Isaac Lenchus 提问时间:9/19/2023 更新时间:9/20/2023 访问量:58

问:

我正在尝试将 256^3 个数据点压缩成一个 256 位或更短的字符串(仅使用以 10 为基数的数字)。我已经尝试了一些东西,我将在下面列出。

我试图在括号之间的加法和减法之间切换。例如:255+(122-(32+(10-3)))),但我不知道如何在刚拿到总和时反转它并取回原始数字。

我不知道还有什么方法可以将这么多数据点压缩成一个 256 或更少的数字字符串。(因为从理论上讲,这应该是可能的,因为 256 位长字符串中的总值比我的数据点的值还要多。

我需要一种方法来不可知地使用这种语言。

与压缩 语言无关的 mit-scratch

评论

0赞 Me again 9/19/2023
你是什么意思?256 位长字符串小于 256 字节(因为每个数字的可能性少于 256 个),但 256^3 个数据点大于 16 兆字节。
0赞 Isaac Lenchus 9/19/2023
它不应该更多,因为它是以 10 为基数吗?
0赞 Me again 9/19/2023
ASCII 字符串以 256 为基数,因为每个符号都可以是 256 种可能性之一。您可能会将字节与位混淆:一个位是 1 或 0,但一个字节包含 8 位并具有 256 个状态。
0赞 Isaac Lenchus 9/19/2023
有没有办法压缩我的数据点(利用每个数据点只能从 1-255 的事实)。我不能再有任何数字了,因为我正在从头开始编程,并尝试通过云变量(只能有 256 个字符)传输此数据。
0赞 Me again 9/19/2023
还有另一种思考方式:每个数据点都是 1 到 256 之间的数字,因此如果它大于 9,您已经需要至少 2 位字符串来存储它。但是,即使您可以以一位数存储一个数据点,您也需要至少 1600 万位数字才能存储 1600 万个数据点。

答:

1赞 Me again 9/19/2023 #1

每个数据点几乎都是 1 个字节(255 个唯一值,而不是 256 个)。如果有 1600 万个数据点 (256^3),则有 16 MB 的数据。

您的字符串有 256 位从 0 到 9 的数字,因此它可以存储 10^256 个状态,或大约 106 个字节。因此,除非这些值彼此之间有一些极端的依赖关系,否则无法将 16MB 压缩到 106B

评论

0赞 Isaac Lenchus 9/19/2023
每个值都表示特定坐标 (X,Y,Z) 处的特定块 ID。如果我可以按顺序传输 ID,那么我就不需要传输每个块的坐标(这将占用更多的数据)。那么有没有办法做到这一点(或者我必须削减到多少块 ID?
0赞 Me again 9/19/2023
退后一步,想想你想做什么。您正在尝试将数百万个值压缩为少数几位数字(少于一千位)。每个数字 10 个值是不够的。
0赞 Isaac Lenchus 9/19/2023
有没有办法用 10 串 256 位数字表示数据?(我的项目中最多可以有 10 个云变量 [问题是您每 0.1 秒只能更新 1 个变量]。 有更多的工作空间可以让它工作吗?
0赞 Mark Adler 9/20/2023
不。。。。。。。。。。。。。
0赞 Mark Adler 9/20/2023 #2

不。只是没有。

为了弄清楚你离能够做你想做的事情还有多远,假设每个坐标的所有 255 个值的可能性相等,你要求以 850 位存储 1.34 亿位信息!在评论中,您询问大约 10 个 256 位字符串,在这种情况下,您将有 8500 位可以放入它。你差了 160,000 倍,或者 16,000 倍,其中有 10 个。

我无法想象你为什么会认为“因为理论上应该是可能的”。