开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 268|回复: 7
收起左侧

[易语言] 源码BUG求帮忙修复

[复制链接]
结帖率:95% (97/102)
发表于 7 小时前 | 显示全部楼层 |阅读模式   山东省聊城市
500精币
在咱们论坛下载了一份 LZSS压缩的源码  可是无法正常运行   求大神帮忙看看 修复一下  感激不尽  附件 源码

补充内容 (2026-2-10 11:12):
BUG 原因 好像是 结尾不能有0 这个字节

lzss.e

970.14 KB, 下载次数: 14

源码


回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值
结帖率:89% (39/44)

签到天数: 9 天

发表于 7 小时前 | 显示全部楼层   河北省衡水市
  
子程序名返回值类型公开备 注
_启动子程序整数型 
变量名类 型静态数组备 注
原始文本字节集 
压缩后字节集 
i整数型 
原始文本 = { 0, 0, 0, 0, 0, 0, 0, 0, 225, 3, 0, 0, 0, 0, 0, 0, 55, 43, 0, 0, 0, 0, 0, 0, 245, 57, 1, 0, 0, 0, 0, 0, 8, 226, 4, 0, 0, 0, 0, 0, 132, 71, 15, 0, 0, 0, 0, 0, 232, 166, 215, 0, 0, 0, 0, 0, 15, 108, 90, 1, 0, 0, 0, 0, 147, 108, 89, 2, 0, 0, 0, 0, 104, 204, 12, 6, 0, 0, 0, 0, 124, 55, 66, 11, 0, 0, 0, 0, 160, 186, 66, 19, 0, 0, 0, 0, 84, 84, 233, 30, 0, 0, 0, 0, 219, 207, 61, 46, 0, 0, 0, 0 }
如果 (取字节集长度 (原始文本) > 1024 × 1024)
压缩后 = 压缩数据 (原始文本)
压缩后 = 压缩数据 (原始文本)

调试输出 (取字节集长度 (原始文本), 取字节集长度 (压缩后))
返回 (0)


i支持库列表   支持库注释   
dp1数据操作支持库一
spec特殊功能支持库

回复

使用道具 举报

结帖率:95% (97/102)

签到天数: 10 天

 楼主| 发表于 7 小时前 | 显示全部楼层   山东省聊城市
你的猫 发表于 2026-2-10 10:37
[e=3].版本 2
.支持库 dp1
.支持库 spec

什么个意思  不要乱回复  谢谢
回复

使用道具 举报

结帖率:100% (3/3)

签到天数: 10 天

发表于 6 小时前 | 显示全部楼层   重庆市重庆市
开始运行被调试程序
* 字节集:79{182,80,0,225,3,48,0,55,43,48,0,245,187,57,1,32,0,8,226,4,32,0,132,187,71,15,32,0,232,166,215,32,0,15,123,108,90,32,26,147,108,89,2,16,0,239,104,204,12,6,16,0,124,55,66,189,11,16,0,160,186,66,19,16,0,84,247,84,233,30,16,0,219,207,61,46,0,16,0}
* 字节集:112{0,0,0,0,0,0,0,0,225,3,0,0,0,0,0,0,55,43,0,0,0,0,0,0,245,57,1,0,0,0,0,0,8,226,4,0,0,0,0,0,132,71,15,0,0,0,0,0,232,166,215,0,0,0,0,0,15,108,90,1,0,0,0,0,147,108,89,2,0,0,0,0,104,204,12,6,0,0,0,0,124,55,66,11,0,0,0,0,160,186,66,19,0,0,0,0,84,84,233,30,0,0,0,0,219,207,61,46,0,0,0,0}
被调试易程序运行完毕

lzss解压缩.e (968.76 KB, 下载次数: 7)
回复

使用道具 举报

结帖率:95% (97/102)

签到天数: 10 天

 楼主| 发表于 6 小时前 | 显示全部楼层   山东省聊城市
z573277679 发表于 2026-2-10 11:16
开始运行被调试程序
* 字节集:79{182,80,0,225,3,48,0,55,43,48,0,245,187,57,1,32,0,8,226,4,32,0,132,187 ...

滑动窗口:4096字节的循环缓冲区

最小匹配长度:3字节(小于等于2的匹配不压缩)

最大匹配长度:16字节

偏移量编码:12位(0-4095)

长度编码:4位(3-18,实际3-16)
按照这个 参数 压缩 与解压的该怎么改压
回复

使用道具 举报

结帖率:63% (5/8)

签到天数: 5 天

发表于 6 小时前 | 显示全部楼层   广西壮族自治区玉林市
自己看源码 修复完了!

补充内容 (2026-2-10 11:44):
还有啥不懂直接我问!

修复版直接调试就行.e

18.25 KB, 下载次数: 3

回复

使用道具 举报

结帖率:100% (3/3)

签到天数: 10 天

发表于 5 小时前 | 显示全部楼层   重庆市重庆市
lcsq001 发表于 2026-2-10 11:27
滑动窗口:4096字节的循环缓冲区

最小匹配长度:3字节(小于等于2的匹配不压缩)

lzss解压缩.e (163.48 KB, 下载次数: 1)
回复

使用道具 举报

结帖率:95% (97/102)

签到天数: 10 天

 楼主| 发表于 1 小时前 | 显示全部楼层   山东省聊城市

大哥 一直不对 您在源代码把  感谢
using System;
using BKSystem.IO;

namespace TBL_TOOL
{
   
// Token: 0x02000007 RID: 7
   
public class LZ77
   
{
        
// Token: 0x060000BC RID: 188 RVA: 0x00006B90 File Offset: 0x00004D90
        
public static byte[] Compress(byte[] data)
        
{
            
if (data.Length == 0)
            
{
               
return new byte[4];
            
}
            
BitStream bitStream = new BitStream();
            
bitStream.Write(true);
            
bitStream.Write(data[0]);
            
int i = 1;
            
while (i < data.Length)
            
{
               
int num = i - 32;
               
if (num < 0)
               
{
                    
num = 0;
               
}
               
int num2 = 0;
               
while (i > num + num2)
               
{
                    
while (data[i == data[num + num2])
                    
{
                        
i++;
                        
num2++;
                        
if (i >= data.Length || num2 >= 15)
                        
{
                           
break;
                        
}
                    
}
                    
num++;
                    
if (num2 < 2 && num2 > 0)
                    
{
                        
i -= num2;
                        
num2 = 0;
                    
}
                    
else if (num2 >= 2)
                    
{
                        
break;
                    
}
               
}
               
if (num2 != 0)
               
{
                    
bitStream.Write(false);
                    
bitStream.Write(num, 0, 12);
                    
bitStream.Write(num2 - 2, 0, 4);
               
}
               
else
               
{
                    
bitStream.Write(true);
                    
bitStream.Write(data[i]);
                    
i++;
               
}
            
}
            
bitStream.Write(false);
            
bitStream.Write(0, 0, 12);
            
byte[] array = new byte[bitStream.Length8];
            
return bitStream.ToByteArray();
        
}
   
}
}








压缩
// Token: 0x060000B3 RID: 179 RVA: 0x00005C2C File Offset: 0x00003E2C
        
private bool DecryptFile(string fn)
        
{
            
bool result;
            
try
            
{
               
FileStream fileStream = new FileStream(fn, FileMode.Open);
               
byte[] array = new byte[(int)fileStream.Length];
               
fileStream.Read(array, 0, (int)fileStream.Length);
               
byte[] buffer;
               
this.bit_reverse(ref array, out buffer);
               
MemoryStream memoryStream = new MemoryStream(buffer);
               
BitStream bitStream = new BitStream(memoryStream);
               
MemoryStream memoryStream2 = new MemoryStream();
               
bitStream.Position = 0L;
               
bitStream.ReadByte();
               
bool flag = true;
               
uint input;
               
bitStream.Read(out input);
               
if ((ulong)this.HiLoShift(input) == (ulong)((long)(array.Length - 9)))
               
{
                    
uint num;
                    
bitStream.Read(out num);
                    
uint num2 = 0U;
                    
uint num3;
                    
bitStream.Read(out num3);
                    
for (;;)
                    
{
                        
bitStream.Read(out flag);
                        
while (flag)
                        
{
                           
byte value;
                           
bitStream.Read(out value);
                           
memoryStream2.WriteByte(value);
                           
bitStream.Read(out flag);
                        
}
                        
uint num4;
                        
bitStream.Read(out num4, 0, 12);
                        
if (num4 == 0U)
                        
{
                           
break;
                        
}
                        
uint num5;
                        
bitStream.Read(out num5, 0, 4);
                        
long position = memoryStream2.Position;
                        
memoryStream2.Position = (long)((ulong)(num2 * 4095U + num4 - 1U));
                        
int num6 = 0;
                        
while ((long)num6 <= (long)((ulong)(num5 + 1U)))
                        
{
                           
byte value2 = (byte)memoryStream2.ReadByte();
                           
memoryStream2.Position = position;
                           
memoryStream2.WriteByte(value2);
                           
position = memoryStream2.Position;
                           
memoryStream2.Position = (long)((ulong)(num2 * 4095U + num4) + (ulong)((long)num6));
                           
num6++;
                        
}
                        
memoryStream2.Position = position;
                        
if (num4 + num5 + 2U > 4095U)
                        
{
                           
num2 = ((num2 < (num4 + num5 + 2U) / 4095U) ? ((num4 + num5 + 2U) / 4095U) : num2);
                        
}
                    
}
               
}
               
else
               
{
                    
this.statusStrip1.Text = "Wrong File.";
               
}
               
string path = fn.Remove(fn.Length - 4) + "_DE.tbl";
               
FileStream fileStream2 = new FileStream(path, FileMode.Create);
               
memoryStream2.WriteTo(fileStream2);
               
fileStream.Close();
               
fileStream2.Close();
               
memoryStream.Close();
               
bitStream.Close();
               
memoryStream2.Close();
               
result = true;
            
}
            
catch (Exception)
            
{
               
result = false;
            
}
            
return result;
        
}




是咱们参数不对 还是哪里错了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备2025452707号) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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