导航:首页 > 文件处理 > 数字串压缩

数字串压缩

发布时间:2023-06-16 17:51:56

‘壹’ C++对一长度为22的数字字符串,无损压缩为16位字符串,并且可逆。有什么好的算法

长度22的数字字符串表示的应该是0至10^23-1
即0到9999....9 (22个9)

一个字符串占一个字节8位,理论上最多表示2^8-1,0~255个状态,
或者说一个字节无符号整数范围是0~255

要无损压缩0至10^23-1范围内的整数,至少需要二进制77位(23/log10(2))

你所说的16位字符串是只16个字符串把,也就是16字节,128位吧,
如果是的话,压缩还是很有冗余的,要是小于77为二进制数,就不可能无损压缩了

最简单的就是用4位二进制码表示1个十进制数
4位二进制码有16中可能,取其中的10中可能表示十进制0~1
那么每两位十进制数就用一个字节表示,22位,只需要11个字节就够了

数字字符0~9的ascii码是48~57(十六进制30~39),只保留低四位就是0~9
两个10进制数给占4位,占一个字节

压缩编码的时候,从十进制低位起,每两个数字一组(个位和十位,百位和千位.....)
(低位的ascii-48) +(高位的ascii-48)*16 获得一个字节
22位的数字,能够获得11个字节的数据,如果要16个字节的话,就有5个字节的冗余

解码的时候,从低到高获得每个字节
字节数据/16的商+48 就是高位的ascii码
字节数据/16的余数+48 就是地位的ascii码

当然乘除可以用移位运算代替,速度更快

‘贰’ 数字的无损压缩算法那些比较合适

一种新的算法,解决了压缩比低、压缩与解压缩的速度慢和格式不通用的问
题。这个《数字无损压缩与解压缩算法》(下面简称算法)有一个卓越的功能,
就是压缩、压缩……在压缩,最终压缩结果为900位的数据,注:(每1位只有0
或1两种状态),这种算法也可以对现在的DVD光盘直接进行无损压缩,压缩率为
90%以上。算法结构非常简单,硬件易构建。是真正意义的无损压缩,下面简单
讲一下算法的功能和原理。
功能1、压缩率为90%以上,如果硬件允许,算法本身的压缩率可做到98%以上
,压缩最小数据量为1200位,压缩结果为900位的数据。为了有90%的
压缩率,所以:(1200位+1200位)×2×2=9600位,实际应用最小数
据为9600位,压缩结果为900位。
2、算法速度取决硬件构建,因为我对硬件不懂,还不能解释,但我要说
:算法结构非常简单。
3、压缩对象:只要是一连串的0或1组成的数据,就可以压缩。不管是图
像数据,还是音频数据或各种进制,都能在这一种算法中进行压缩与
解压缩,而压缩率和速度都是一样的。
4、实时压缩与解压缩,这个还要看硬件构建情况,才能回答,用我个人
的说法是:处处有余的。
原理1、跟现在的无损压缩,有损压缩和混合原理,完全不同,先讲布局,布
局是一个45格×45格的正方形,共有2025个空格,用来寄存数据的只
有1200空格,(每1个空格只能寄存0或1两种状态),1200个空格既
能寄存1200位的数据量,其余825个空格另做它用,下面将这个布局
称为子模型。
2、对子模型进行算法,定位算法,只对数据中的1进行定位算法,不进
行定位算法的既是0,写入子模型的1200数据,定位算法结果数据为900
位。
3、五个子模型,组成一个完整的算法,数据经过两次压缩,原始数据96
00位,压缩成了900位的数据,每增加1次压缩,压缩的数据量就得扩
大为前1次被压缩的数据量的2倍。既9600位×2=19200位,压缩结果数据
有是不同的900位,这样就在次扩大了压缩率。

原始数据9600位→(压缩算法)→压缩结果数据为900位
001001……1001 001001……10010000
算法是设计好了,只需专家的鉴定和硬件的构建,希望有更多的专业人士把这
种算法设计到芯片上去。对《数字无损压缩与解压缩》的方法或技术有兴趣的朋
友,我们可以一同交流一下。

‘叁’ C语言 解压缩字符串

#include<stdio.h>

intmain()

{

chars[50],s1[100];

inti=0,j=0,k,n;

gets(s);//输入压缩后的字符串

while(s[i])

{

s1[j]=s[i];

//因为形式是先字符后数字,所以第一个肯定是字符,先赋入另一个数组以便后续操作。

i++;j++;//递增,开始处理下一位的数字

n=0;

while(s[i]>='0'&&s[i]<='9')//只要是数字就要进入循环统计

{

n*=10;

n+=s[i]-'0';

i++;

}

for(k=0;k<n-1;k++)

//因为解压缩的字符已经存入数组s1,所以只剩下n-1要再放入s1

s1[j+k]=s1[j-1];

if(n>0)//注意,一定要n>0因为有可能是连续字符,本来就没被压缩这时如果还把j加上n-1就反而是让j减小了。

j+=n-1;

}

s1[j]='';//处理结束后,最后一个设为空字符结束。

printf("%s ",s1);

return0;

}

(3)数字串压缩扩展阅读

C语言:数据结构-稀疏矩阵的压缩存储

稀疏矩阵的压缩存储原理,只存储非零元素ai,j和相应的行、列序号i、j。具体方法:对稀疏矩阵中每一个非零元素设定一个三元组(i,j,ai,j)。

将所有三元组按行优先排列,组成一个三元组表(线性表)。只要存储三元组表和该矩阵的行、列数,就能唯一确定该矩阵。

‘肆’ “数字压缩”是怎样实现的

“数字压缩”技术,可降低表达一条信息,无论是文件、静止图像、电影或声音所需的数字码(1和0的数字串)的数量。数字传输对传输视频信息至关重要,因为数字化的视频信息占用大量的空间。例如,只有4秒钟长的数字化电影会占满100兆字节的硬驱空间。如果不加以压缩,一部标准长度的故事片会充满350多盘普通光盘。为了实现压缩,在从一帧至另一帧的画面中,只录下变化的部分,而不变的(如背景)则只录下一次。目前尚不存在的一项关键技术是所谓的家用信息电器,它可与“信息高速公路”相接,支持所有拟议中的视频和文字应用,并且像电话和电视机一样使用方便。

‘伍’ 压缩的十进制数串形式的表示方法是什么求大神教,自学看书看不懂,谢谢

10进制数在计算机中可用8421BCD码表示,分为非压缩方式 和 压缩方式。
非压缩方式即一个字节表示一位10进制,高4位为0。
压缩方式是一个字节表示2为10进制数。

例如:2345 这个10进制数,非压缩方式的4个字节顺序为:
00000010 00000011 00000100 00000101
压缩方式的两个字节为:00100011 01000101

阅读全文

与数字串压缩相关的资料

热点内容
36岁程序员近况 浏览:281
哪里可以下载不加密的歌 浏览:934
隐藏文件夹是什么梗 浏览:918
插件注册命令 浏览:497
梁一端加密一端不加密规范 浏览:82
代码行数统计命令 浏览:104
单片机中2K表示什么 浏览:482
紫禁城为什么会断开服务器 浏览:578
华为手机的方舟编译器在哪呢 浏览:123
下载压缩虐杀原形2 浏览:905
linux脚本cd 浏览:166
间架结构pdf 浏览:843
重庆农村商业银行app怎么老出问题 浏览:471
慧编程配置要求 浏览:673
数控机床编程与操作视频 浏览:461
文件夹资料误删怎么办 浏览:87
手机app怎么下载安装 浏览:492
最新的java版本 浏览:994
万卷小说缓存在哪个文件夹 浏览:687
st单片机怎样烧 浏览:872