1.怎样在电脑上解密查看压缩包apk文件里的字典字典源码?
2.请问有没有LZW压缩算法的源代码?
怎样在电脑上解密查看压缩包apk文件里的源码?
想要在电脑上解密查看压缩包中的APK文件源码,主要有两种方法。压缩源码压缩源码首先,字典字典你可以通过右键点击文件,压缩源码压缩源码交易商城源码选择"打开方式"选项,字典字典然后从列表中选择使用WinRAR进行打开。压缩源码压缩源码这样,字典字典你就可以查看文件内的压缩源码压缩源码内容,直接浏览APK文件中的字典字典源码。
另外一种方法是压缩源码压缩源码,你可以在文件管理器中修改文件后缀名,字典字典鼎富源码net源码将其更改为.rar。压缩源码压缩源码然后,字典字典使用WinRAR或其他解压工具进行解压。压缩源码压缩源码解压后,字典字典你将得到一个文件夹,spark源码和hadoop源码里面包含的就是该程序的源文件。
无论使用哪种方法,关键在于找到合适的解压工具,如WinRAR,以便打开并查看APK文件。源码交易站源码php这将帮助你访问APK文件中的源码,以便进行分析、修改或学习。通过这样的步骤,你就可以在电脑上解密并查看压缩包中的免费源码1001免费源码源码。
总之,解密并查看压缩包中的APK文件源码并不复杂,只需选择合适的解压工具并按照上述步骤操作即可。通过这种方法,你可以轻松地访问APK文件中的源码,以便进行进一步的分析或修改。
请问有没有LZW压缩算法的源代码?
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define PATHSIZE
#define BITS
#define HashShift BITS-8
#define MAX_VALUE ((1<<BITS)-1)
#define MAX_CODE (MAX_VALUE-1)
#define HashTableLen
#define process
/*压缩结构*/
typedef struct
{
int *code;
unsigned int *prenum;
unsigned char *baknum;
}LZW_DATA;
unsigned char decode_stack[HashTableLen];
LZW_DATA lzwt,*lzw;
void dataout(FILE *output,unsigned int code);/*输出压缩后的流*/
unsigned int hashfind(unsigned int hash_prenum,unsigned int hash_character);/*压缩算法*/
char *decode(unsigned char *buffer,unsigned int code);
unsigned int incode(FILE *input);
void compress(FILE *input,FILE *output);
void decompress(FILE *input,FILE *output);
int main()
{
FILE *fp1,*fp2;
char path[PATHSIZE];
S1:puts("Input function.(h:hoop,u:uncompress)...");
fflush(stdin);
gets(path);
if(!strcmp(path,"h")||!strcmp(path,"hoop"))
{
printf("Input source file path:");
fflush(stdin);
gets(path);
if((fp1=fopen(path,"rb"))==NULL)
{
puts("Can not open source file!");
return 1;
}
printf("Input objective file path:");
fflush(stdin);
gets(path);
if((fp2=fopen(path,"wb"))==NULL)
{
puts("Can not open objective file!");
return 1;
}
compress(fp1,fp2);
}
else if(!strcmp(path,"u")||!strcmp(path,"uncompress"))
{
printf("Input source file path:");
fflush(stdin);
gets(path);
if((fp1=fopen(path,"rb"))==NULL)
{
puts("Can not open source file!");
return 1;
}
printf("Input objective file path:");
fflush(stdin);
gets(path);
if((fp2=fopen(path,"wb"))==NULL)
{
puts("Can not open objective file!");
return 1;
}
decompress(fp1,fp2);
}
else
{
puts("Input error,please input again!");
goto S1;
}
fclose(fp1);
fclose(fp2);
S2:puts("If continue or not(y:yes/n:no)?");
fflush(stdin);
gets(path);
if(!strcmp(path,"y")||!strcmp(path,"yes"))
{
goto S1;
}
else if(!strcmp(path,"n")||!strcmp(path,"no"))
{
goto S3;
}
else
{
puts("Input error,please input again!");
goto S2;
}
S3:return 0;
}
void compress(FILE *input,FILE *output)
{
int i,index,len1,len2;
int curr_code;
int baknum;
int prenum;
len1=HashTableLen*sizeof(unsigned int);
len2=HashTableLen*sizeof(unsigned char);
if(!(lzwt.code=(int*)malloc(len1)))
{
puts("Internal memory distribution error!");
exit(0);
}
if(!(lzwt.prenum=(unsigned int*)malloc(len1)))
{
puts("Internal memory distribution error!");
exit(0);
}
if(!(lzwt.baknum=(unsigned char*)malloc(len2)))
{
puts("Internal memory distribution error!");
exit(0);
}
lzw=&lzwt;
curr_code=;
for(i=0;i<HashTableLen;i++)
{
lzw->code[i]=-1;
}
i=0;
puts("Hoop begin.");
prenum=getc(input);
while((baknum=getc(input))!=EOF)
{
index=hashfind(prenum,baknum);
if(lzw->code[index]!=-1)
{
prenum=lzw->code[index];
}
else
{
if(curr_code<=(MAX_CODE))
{
lzw->code[index]=curr_code++;
lzw->prenum[index]=prenum;
lzw->baknum[index]=baknum;
}
dataout(output,prenum);
prenum=baknum;
}
if(i==prenum)
{
i=0;
putchar('.');
}
else
{
i++;
}
}
dataout(output,prenum);
dataout(output,MAX_VALUE);
dataout(output,0);
free(lzw->code);
free(lzw->prenum);
free(lzw->baknum);
}
unsigned int hashfind(unsigned int prenum,unsigned int baknum)
{
int index;
int offset;
index=(baknum<<HashShift)^prenum;
if(index==0)
{
offset=1;
}
else
{
offset=HashTableLen-index;
}
while(1)
{
if(lzw->code[index]==-1)
{
return index;
}
if(lzw->prenum[index]==prenum&&lzw->baknum[index]==baknum)
{
return index;
}
index-=offset;
if(index<0)
{
index+=HashTableLen;
}
}
}
void dataout(FILE *output,unsigned int code)
{
static int outbinary=0;
static unsigned long nob=0L;
nob|=(unsigned long)code<<(-BITS-outbinary);
outbinary+=BITS;
while(outbinary>=8)
{
putc(nob>>,output);
nob<<=8;
outbinary=outbinary-8;
}
}
void decompress(FILE *input,FILE *output)
{
unsigned int curr_code;
unsigned int baknum;
unsigned int prenum;
int i,ch,len1,len2;
char *ps;
len1=HashTableLen*sizeof(unsigned int);
len2=HashTableLen*sizeof(unsigned char);
if(!(lzwt.code=(int*)malloc(len1)))
{
puts("Internal memory distribution error!");
exit(0);
}
if(!(lzwt.prenum=(unsigned int*)malloc(len1)))
{
puts("Internal memory distribution error!");
exit(0);
}
if(!(lzwt.baknum=(unsigned char*)malloc(len2)))
{
puts("Internal memory distribution error!");
exit(0);
}
lzw=&lzwt;
curr_code=;
i=0;
puts("Uncompress begin.");
ch=prenum=incode(input);
putc(prenum,output);
while((baknum=incode(input))!=MAX_VALUE)
{
if(baknum>=curr_code)
{
*decode_stack=ch;
ps=decode(decode_stack+1,prenum);
}
else
{
ps=decode(decode_stack,prenum);
}
ch=*ps;
while(ps>=decode_stack)
{
putc(*(ps--),output);
}
if(curr_code<=MAX_CODE)
{
lzw->prenum[curr_code]=prenum;
lzw->baknum[curr_code]=ch;
curr_code++;
}
prenum=baknum;
if(i==process)
{
i=0;
putchar('.');
}
else
{
i++;
}
}
free(lzw->code);
free(lzw->prenum);
free(lzw->baknum);
}
char *decode(unsigned char *buffer,unsigned int code)
{
int len=0;
while(code>)
{
*buffer++=lzw->baknum[code];
code=lzw->prenum[code];
len++;
if(len>=HashTableLen)
{
puts("Internal memory run over!");
exit(1);
}
}
*buffer=code;
return buffer;
}
unsigned int incode(FILE *input)
{
unsigned int ret;
static int inputbinary=0;
static unsigned long nib=0L;
while(inputbinary<=)
{
nib|=(unsigned long)getc(input)<<(-inputbinary);
inputbinary=inputbinary+8;
}
ret=nib>>(-BITS);
nib<<=BITS;
inputbinary=inputbinary-BITS;
return ret;
}
这是我以前写的LZW算法,压缩和解压缩文本文件都没问题,就是解压后可能字符的顺序有点问题,呵呵用作学习的
我在这个地址回答过了,这样的复杂算法一般不会有个人去写的,我写了就觉得晕,如果提问的是同一个人,加我QQ我抽空教你原理。
/question/.html?fr=im