1.txt 45678 | 12-23-23-123-
2.txt的45678在最后一行。
下标越界: '[number: 0]'
如果在2.txt里面查到不到1.txt的scode代码,应该在1.txt里面读取一行新的scode代码,然后再2.txt里面继续查找啊。。。
<%@LANGUAGE="VBScript" CODEPAGE="65001"%>
<!--#include file="aspJSON1.17.asp"-->
<meta charset="utf-8" />
<%
Function EnCodeY(sText,sCode)'当参数传入
Dim arrCode(),i,flag,strResult
arrData = split(sText, "-")
cntData = UBOUND(arrData) - 1
cntCode = Len(sCode) - 1
Redim arrCode(cntCode)
For i = 0 To cntCode
arrCode(i) = Mid(sCode, i + 1, 1)
Next
flag = 0
strResult = ""
For i = 0 To cntData
strResult = strResult & CHR(Cint(arrData(i)) XOR ASC(arrCode(flag)))
IF flag = cntCode Then
flag = 0
Else
flag = flag + 1
End IF
Next
EnCodeY = strResult
End Function
function readText(path,charset)'读文件
set ts=server.CreateObject("adodb.stream")
ts.charset=charset'内容编码
ts.mode=3'读写模式
ts.type=2'文本模式
ts.open
ts.LoadFromFile path
readText=ts.readtext
ts.close:set ts=nothing
end function
function writeText(path,charset,text)'写文件
set ts=server.CreateObject("adodb.stream")
ts.mode=3'写写模式
ts.type=2'文本模式
ts.open
ts.charset=charset'内容编码
ts.WriteText text,1
ts.SaveToFile path,2
ts.close:set ts=nothing
end function
function findCode(v,arr)'查找开头数字一样的code值
dim i,l,arrCode
l=ubound(arr)
for i=0 to l
arrCode=split(arr(i)," | ")
if arrCode(0)=v then
findCode=arrCode(1)
exit function
end if
next
end function
function doDecode(path1,pathcode,pathrst)'path1:要解码的文件物理路径 pathcode:code文件物理路径 pathrst:解码保存文件物理路径
dim arrA,arrCode,l,i,s,scode,arr
'============
arrA=split(replace(readText(path1,"gb2312"),chr(13),""),chr(10))'注意如果要解密的字符不存在1.txt里面注意修改这里,下面的code同理
arrCode=split(replace(readText(pathcode,"gb2312"),chr(13),""),chr(10))
s=""
l=ubound(arrA)
for i=0 to l
arr=split(arrA(i)," | ")
scode=findCode(arr(0),arrCode)
if scode="" then
response.Write arr(0)&"找不到code代码<br>"
else
if s<>"" then s=s&chr(13)&chr(10)
s=s&arr(0)&" | "&EnCodeY(arr(1),scode)'如果不需要前缀id,去掉arr(0)&" | "&
end if
next
writeText pathrst,"gb2312",s
end function
doDecode server.MapPath("1.txt"),server.MapPath("2.txt"),server.MapPath("3.txt")
%>
解码完毕,<a href='3.txt' target='_blank'>点击查看解码文件</a>
asp 执行出错啊。解码, showbo大神千呼万应你快来啊。
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- Go 旅城通票 2017-06-14 10:18关注
这句先删除,我这里测试忘记删了,你没删除会出错,除非你有这个asp文件
<!--#include file="aspJSON1.17.asp"-->
越界在哪行?你的格式要注意波,一定要是和你上个问题说的一样
要解码的内容为下面这种,不能出现空行
73628 | 89-69-10-94-4-1-6-76-91-5-87-95-85- 73628 | 89-69-10-94-4-1-6-76-91-5-87-95-85- 。。。。
scode文件也不能出现空行,每行内容必须存在“空格|空格”内容,不存在split会出错越界
这个hi来捣乱的 | 啊啊啊 73628 | hw9s535xv4elaje 。。。。
下面是改过的代码,防止查找findCode,doDecode越界的
<%@LANGUAGE="VBScript" CODEPAGE="65001"%> <meta charset="utf-8" /> <% Function EnCodeY(sText,sCode)'当参数传入 Dim arrCode(),i,flag,strResult arrData = split(sText, "-") cntData = UBOUND(arrData) - 1 cntCode = Len(sCode) - 1 Redim arrCode(cntCode) For i = 0 To cntCode arrCode(i) = Mid(sCode, i + 1, 1) Next flag = 0 strResult = "" For i = 0 To cntData strResult = strResult & CHR(Cint(arrData(i)) XOR ASC(arrCode(flag))) IF flag = cntCode Then flag = 0 Else flag = flag + 1 End IF Next EnCodeY = strResult End Function function readText(path,charset)'读文件 set ts=server.CreateObject("adodb.stream") ts.charset=charset'内容编码 ts.mode=3'读写模式 ts.type=2'文本模式 ts.open ts.LoadFromFile path readText=ts.readtext ts.close:set ts=nothing end function function writeText(path,charset,text)'写文件 set ts=server.CreateObject("adodb.stream") ts.mode=3'写写模式 ts.type=2'文本模式 ts.open ts.charset=charset'内容编码 ts.WriteText text,1 ts.SaveToFile path,2 ts.close:set ts=nothing end function function findCode(v,arr)'查找开头数字一样的code值 dim i,l,arrCode l=ubound(arr) for i=0 to l if arr(i)<>"" and instr(arr(i)," | "))<>0 then'非空行并且包含 | arrCode=split(arr(i)," | ") if arrCode(0)=v then findCode=arrCode(1) exit function end if end if next end function function doDecode(path1,pathcode,pathrst)'path1:要解码的文件物理路径 pathcode:code文件物理路径 pathrst:解码保存文件物理路径 dim arrA,arrCode,l,i,s,scode,arr arrA=split(replace(readText(path1,"gb2312"),chr(13),""),chr(10)) arrCode=split(replace(readText(pathcode,"gb2312"),chr(13),""),chr(10)) s="" l=ubound(arrA) for i=0 to l if trim(arrA(i))<>"" and instr(arrA(i)," | "))<>0 then'非空行并且包含 | arr=split(arrA(i)," | ") scode=findCode(arr(0),arrCode) if scode="" then response.Write arr(0)&"找不到code代码<br>" else if s<>"" then s=s&chr(13)&chr(10) s=s&arr(0)&" | "&EnCodeY(arr(1),scode)'如果不需要前缀id,去掉arr(0)&" | "& end if else response.Write arrA(i)&"为空或者没有分隔符号“ | ”<br>" end if next writeText pathrst,"gb2312",s end function doDecode server.MapPath("1.txt"),server.MapPath("2.txt"),server.MapPath("3.txt") %> 解码完毕,<a href='3.txt' target='_blank'>点击查看解码文件</a>
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥40 复杂的限制性的商函数处理
- ¥15 程序不包含适用于入口点的静态Main方法
- ¥15 素材场景中光线烘焙后灯光失效
- ¥15 请教一下各位,为什么我这个没有实现模拟点击
- ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
- ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
- ¥20 有关区间dp的问题求解
- ¥15 多电路系统共用电源的串扰问题
- ¥15 slam rangenet++配置
- ¥15 有没有研究水声通信方面的帮我改俩matlab代码