我有一个 Raspberry Pi 设置,可以通过我的项目中的套接字传输内容。它目前通过蜂窝数据按即付即用计划执行此操作,因此我想对其进行优化。所有需要传输的是三个数字,当前格式为int,int,int
. 所以,我的问题是哪个字符使用的数据最少。我知道这是挑剔的,但更多的是为了理论。
如果可能的话,列表会更好,因为我还需要一个表示负数的字符。
它将是从 -100 到 100 但如果在另一端重新格式化,这可能是任何 200 范围
我有一个 Raspberry Pi 设置,可以通过我的项目中的套接字传输内容。它目前通过蜂窝数据按即付即用计划执行此操作,因此我想对其进行优化。所有需要传输的是三个数字,当前格式为int,int,int
. 所以,我的问题是哪个字符使用的数据最少。我知道这是挑剔的,但更多的是为了理论。
如果可能的话,列表会更好,因为我还需要一个表示负数的字符。
它将是从 -100 到 100 但如果在另一端重新格式化,这可能是任何 200 范围
您想要的是“打包”您的 3 个整数,而不是将十进制数表示为文本。
如果您的 3 个值是例如 123、1200 和 45678,那么如果您将它们作为三个 16 位整数发送,它将占用 6 个字节。如果您将它们作为由十进制表示组成的人类可读字符串发送,用逗号分隔,则需要 14 个字节。
二进制格式的一大难点是确保每个字段具有适合其值范围和精度的位数/字节数。如果您的任何整数可以具有 0 到 10 亿之间的任何值,那么您将需要一个 32 位整数。如果它的范围从 0 到 100,那么单个字节(8 位整数)就足够了。
整数可以有有符号或无符号表示。同样,这是匹配实际可能的值范围的问题:
确保您正确定义了您使用的格式并且两端使用相同的格式,并且它确实适合您需要的整个值范围。
当然,即使你需要从 0 到 10000 的值,如果所有可能的值都是 100 的倍数(或者你不关心最后两位数字),那么一个字节就足够了(只需除以 100 一个并在另一端乘以 100)。
在某些情况下,使用指数可能更合适。这实际上取决于所需的范围和精度。
评论有点太大了,并且没有回答您发布的问题,但是......
首先,给@jcaron 点赞,是的,学习数据格式(整数/字符串/等)和数据压缩(想想 .ZIP 文件)是个好主意。
但是,另一种选择是考虑物联网 SIM 卡。近年来出现了许多这样的现象。它们只是数据,没有语音,请注意有些可能只是 2G,您的国家可能不支持,或者可能会掉线。
最大的优势是他们按发送的数据字节收费,有些甚至没有月费。
我是在购买 Onion Omega 3G 扩展(*)时第一次意识到它们的。哪位推荐全息图。
我会让你自己做决定。谷歌IoT SIM
也许?
您可以查看全息 SIM的亚马逊列表,其中包括与其他人的比较。
这是全息图的定价。
这里是 ThingsMobile。
此处为全球 M2M SIM。
一般来说,你说的是 5 美分一兆字节,当你只发送 3 个整数时,这是很多数据。