搜索
bottom↓
回复: 28

请教如何压缩12字节的唯一ID到6个字节,压缩后尽量少重复

[复制链接]

出0入0汤圆

发表于 2018-12-12 17:38:24 | 显示全部楼层 |阅读模式
如题

请教如何压缩12字节的唯一ID到6个字节,压缩后尽量少重复

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2018-12-12 17:43:49 | 显示全部楼层
节省6个bytes要付出6k bytes的代价

出0入0汤圆

发表于 2018-12-12 17:47:38 | 显示全部楼层
12字节ID,算每一字节都是0-9和A-Z,不分大小写,是36的12次方,等于4738381338321616896。
6个字节内容,最大可编码信息256的6次方,等于281474976710656。上面的数比下面的数大16000倍。
理论上应该是不可能完成的吧?不知道我想的对不对?

出30入25汤圆

发表于 2018-12-12 17:48:29 | 显示全部楼层
如果不考虑数据本身的任何特征,hash几乎是唯一的办法。

当然,如果数据有特征可以利用,那就自行处理就可以了。从算法的角度来讲,这就相当于多少有点作弊了。

出0入0汤圆

发表于 2018-12-12 17:49:05 | 显示全部楼层
nengcai0313 发表于 2018-12-12 17:47
12字节ID,算每一字节都是0-9和A-Z,不分大小写,是36的12次方,等于4738381338321616896。
6个字节内容, ...

楼主只是要求尽量少重复而已.

出30入25汤圆

发表于 2018-12-12 17:49:12 | 显示全部楼层
nengcai0313 发表于 2018-12-12 17:47
12字节ID,算每一字节都是0-9和A-Z,不分大小写,是36的12次方,等于4738381338321616896。
6个字节内容, ...

LZ提到尽量减少重复------也就是说LZ接受冲撞的情况存在。

出0入0汤圆

发表于 2018-12-12 17:51:25 | 显示全部楼层
12个字节转义CRC32用了4字节,剩下两字节你看着办

出0入0汤圆

发表于 2018-12-12 17:57:19 | 显示全部楼层
12个字节中每一个字节都是随机不可预测的还是固定的,如果是前者,基本上没有可能

出0入0汤圆

发表于 2018-12-12 18:35:28 | 显示全部楼层
算这12B的CRC32作低4B,算这12B的和(16bit)作高2B

出0入0汤圆

发表于 2018-12-12 18:51:42 | 显示全部楼层
楼主要搞清楚这个ID有没有规律,比如一些ID带生产厂商编号或生产日期等等,那就好办了,重复率能做很低。

出0入0汤圆

发表于 2018-12-12 18:56:31 | 显示全部楼层
之前就有人问过了,必须要牺牲啊。

否则,32变16,16变8,8变4,,,,还用那么多干嘛。

出0入0汤圆

发表于 2018-12-12 19:16:58 | 显示全部楼层
CRC32 + CRC16

出0入0汤圆

发表于 2018-12-12 20:06:37 | 显示全部楼层
说什么都一样2^48个值,难道是IPv6?

出0入8汤圆

发表于 2018-12-12 21:22:43 来自手机 | 显示全部楼层
我想把32个字节的通讯压缩一下,不知道能不能实现

出100入113汤圆

发表于 2018-12-12 21:32:57 | 显示全部楼层
HASH 算法截取6字节。

出500入109汤圆

发表于 2018-12-12 21:38:16 来自手机 | 显示全部楼层
最好的办法就是让重复的概率达到理论大分布,而不是某些点有非常高的重复率,

出0入14汤圆

发表于 2018-12-12 21:49:32 | 显示全部楼层
NJ8888 发表于 2018-12-12 17:51
12个字节转义CRC32用了4字节,剩下两字节你看着办

CRC应该不可逆吧....我猜楼主是想做密码的...

出0入12汤圆

发表于 2018-12-12 21:59:08 | 显示全部楼层
12个字节 做成6字节,感觉每两个字节相加或异或,取一个字节就可以了。
这一个字节包含了两个字节的影响,为什么这么多人都推荐用CRC等等这样复杂的算法呢?

出0入4汤圆

发表于 2018-12-12 23:08:17 | 显示全部楼层
bitter 发表于 2018-12-12 20:06
说什么都一样2^48个值,难道是IPv6?

V6也不是6个字节呀

出0入4汤圆

发表于 2018-12-12 23:08:39 | 显示全部楼层
好奇LZ的目的是什么,或者原因是什么。

出10入46汤圆

发表于 2018-12-13 08:37:12 | 显示全部楼层
理解压缩 和 校验 的含义没?

出0入442汤圆

发表于 2018-12-13 09:08:08 来自手机 | 显示全部楼层
高6字节和低6字节直接异或吧。

出0入0汤圆

发表于 2018-12-13 09:09:34 | 显示全部楼层
楼主 说压缩的话 应该需要可逆吧  crc什么的 都不可逆

出0入12汤圆

发表于 2018-12-13 09:24:46 | 显示全部楼层
richards 发表于 2018-12-13 09:09
楼主 说压缩的话 应该需要可逆吧  crc什么的 都不可逆

12字节变成6字节,要可逆,怎么直觉感觉就不可能呢?

出0入25汤圆

发表于 2018-12-13 10:53:00 | 显示全部楼层
LZ 不会是要用来做MAC地址吧!这样的话,不可逆也行啊

出0入0汤圆

发表于 2018-12-14 09:32:46 | 显示全部楼层
感觉像是用ID做MAC

出0入17汤圆

发表于 2018-12-14 10:37:21 | 显示全部楼层
做IP 的Mac地址的吗?是的话,观察下芯片序列号哪些是重复的,可以忽略,然后做个算法,甚至直接采用某6个字节

出0入0汤圆

发表于 2018-12-14 22:57:49 | 显示全部楼层
laujc 发表于 2018-12-12 23:08
V6也不是6个字节呀

是我的错,本来想说MAC,看到6,鬼使神差的来了个ipv6
多谢朋友指正

出0入0汤圆

 楼主| 发表于 2018-12-17 09:52:28 | 显示全部楼层
本帖最后由 longforljy 于 2018-12-17 09:56 编辑

目的是为了提高通信效率,降低发射时间和功耗

产品对低功耗要求很高,通信上,带的mac地址,12byte太浪费

因为很多时候,数据段都是一些单字节的命令
如:包头 0xAA + 0x55,mac = 12字节,命令字 1字节,校验和 1字节

后来采用了类似异或的简单办法,压缩了12字节的mac(这个mac来自STM32的 unique id)  到  6个字节
后来小批量量产的时候发现,重复的概率很高(200个,两两重复了5~7对,具体忘记了)

有考虑md5算法来弄,但是比较浪费代码空间,也不知道具体碰撞率怎样
hash的话,没用过,好像有很多种hash算法,具体碰撞率也不清楚

STM32的unique  id,我不太清楚有什么规律。。。。下面我贴个图



前面3项,分别是晶元的X Y N值
最后一项,是批次号

考虑过,如果买的是正品,批次号应该是相同的,而晶元号都不同
可以利用晶元号作为唯一ID



最后的最后,我司产品的下一批次,我已经决定采用烧号的方式了。。。费事点,不过确保不会重复。。哈哈







本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-26 20:16

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表