TC官方合作论坛
标题:
关于代码的优化, 我这个代码能不能用遍历语句简化?
[打印本页]
作者:
T星人
时间:
2014-11-7 16:29
标题:
关于代码的优化, 我这个代码能不能用遍历语句简化?
本帖最后由 T星人 于 2014-11-7 19:48 编辑
请各位大神帮我看下可以吗, 在线等
d
if(十六数[7]!=0)
d=十六数[7]&十六数[6]&十六数[5]&十六数[4]&十六数[3]&十六数[2]&十六数[1]&十六数[0]
else
if(十六数[6]!=0)
d=十六数[6]&十六数[5]&十六数[4]&十六数[3]&十六数[2]&十六数[1]&十六数[0]
else
if(十六数[5]!=0)
d=十六数[5]&十六数[4]&十六数[3]&十六数[2]&十六数[1]&十六数[0]
else
if(十六数[4]!=0)
d=十六数[4]&十六数[3]&十六数[2]&十六数[1]&十六数[0]
else
if(十六数[3]!=0)
d=十六数[3]&十六数[2]&十六数[1]&十六数[0]
else
if(十六数[2]!=0)
d=十六数[2]&十六数[1]&十六数[0]
else
if(十六数[1]!=0)
d=十六数[1]&十六数[0]
else
if(十六数[0]!=0)
d0=十六数[0]
endif
endif
endif
endif
endif
endif
endif
endif
复制代码
d7,d6,d5,d4,d3,d2,d1,d0
if(十六数[7]!=0)
d7=十六数[7]
d6=字符串.连接(d7,十六数[6])
d5=字符串.连接(d6,十六数[5])
d4=字符串.连接(d5,十六数[4])
d3=字符串.连接(d4,十六数[3])
d2=字符串.连接(d3,十六数[2])
d1=字符串.连接(d2,十六数[1])
d0=字符串.连接(d1,十六数[0])
else
if(十六数[6]!=0)
d6=十六数[6]
d5=字符串.连接(d6,十六数[5])
d4=字符串.连接(d5,十六数[4])
d3=字符串.连接(d4,十六数[3])
d2=字符串.连接(d3,十六数[2])
d1=字符串.连接(d2,十六数[1])
d0=字符串.连接(d1,十六数[0])
else
if(十六数[5]!=0)
d5=十六数[5]
d4=字符串.连接(d5,十六数[4])
d3=字符串.连接(d4,十六数[3])
d2=字符串.连接(d3,十六数[2])
d1=字符串.连接(d2,十六数[1])
d0=字符串.连接(d1,十六数[0])
else
if(十六数[4]!=0)
d4=十六数[4]
d3=字符串.连接(d4,十六数[3])
d2=字符串.连接(d3,十六数[2])
d1=字符串.连接(d2,十六数[1])
d0=字符串.连接(d1,十六数[0])
else
if(十六数[3]!=0)
d3=十六数[3]
d2=字符串.连接(d3,十六数[2])
d1=字符串.连接(d2,十六数[1])
d0=字符串.连接(d1,十六数[0])
else
if(十六数[2]!=0)
d2=十六数[2]
d1=字符串.连接(d2,十六数[1])
d0=字符串.连接(d1,十六数[0])
else
if(十六数[1]!=0)
d1=十六数[1]
d0=字符串.连接(d1,十六数[0])
else
if(十六数[0]!=0)
d0=十六数[0]
endif
endif
endif
endif
endif
endif
endif
endif
复制代码
作者:
T星人
时间:
2014-11-7 16:37
能用遍历语句简化吗 求大神光顾!!
作者:
610761555
时间:
2014-11-7 16:54
var 十六数,长度,d7,d6,d5,d4,d3,d2,d1,d0,d,len
arraysp.size(十六数,长度)
for(j=0;j<长度;j++)
if(十六数[j]!=0)
select(十六数[j])
case 0:
d0=十六数[0]
case 1:
d1=十六数[1]
d0=d1 & 十六数[0]
case 2:
d2=十六数[2]
d1=d2 & 十六数[1]
d0=d1 & 十六数[0]
case 3:
d3=十六数[3]
d2=d3 & 十六数[2]
d1=d2 & 十六数[1]
d0=d1 & 十六数[0]
case 4:
d4=十六数[4]
d3=d4 & 十六数[3]
d2=d3 & 十六数[2]
d1=d2 & 十六数[1]
d0=d1 & 十六数[0]
case 5:
d5=十六数[5]
d4=d5 & 十六数[4]
d3=d4 & 十六数[3]
d2=d3 & 十六数[2]
d1=d2 & 十六数[1]
d0=d1 & 十六数[0]
case 6:
d6=十六数[6]
d5=d6 & 十六数[5]
d4=d5 & 十六数[4]
d3=d4 & 十六数[3]
d2=d3 & 十六数[2]
d1=d2 & 十六数[1]
d0=d1 & 十六数[0]
case 7:
d7=十六数[7]
d6=d7 & 十六数[6]
d5=d6 & 十六数[5]
d4=d5 & 十六数[4]
d3=d4 & 十六数[3]
d2=d3 & 十六数[2]
d1=d2 & 十六数[1]
d0=d1 & 十六数[0]
default:
endselect
endif
endfor
还能有更简单的,不是自己写的东西不明用意,有点蛋疼,需要思考下
作者:
610761555
时间:
2014-11-7 17:20
本帖最后由 610761555 于 2014-11-7 17:26 编辑
var 十六数=array[8],长度,d=array[8],temp
arraysp.size(十六数,长度)
for(j=0;j<长度;j++)
十六数[j]=j
d[j]= j
if(j>0&&十六数[j]!=0)
d[j]=十六数[j]
traceprint("d" & j & "=" & d[j])
for(x=0;x<j;x++)
temp = d[x]
d[x] = d[x+1] & "," & 十六数[x]
traceprint("d" & x & "=" & d[x])
d[x] = temp
endfor
traceprint("------------------")
endif
endfor
复制代码
[attach]18181[/attach]
作者:
T星人
时间:
2014-11-7 20:03
610761555 发表于 2014-11-7 17:20
谢谢帮忙, 我试了下, 对不上, 我这个代码是10进制转成16进制的 功能代码的下半部分, 上半部分是往数组里存放数据, 下半部分是从数组中取出数据,并正常排列成16进制. 存的时候是正常顺序,但是取出数据的时候是反顺序取出数据才能正常排列, 或者正常顺序取出后加一个倒序的方法也是可以. 我把代码简化了一下, 能再帮我看一下吗,
d
if(十六数[7]!=0)
d=十六数[7]&十六数[6]&十六数[5]&十六数[4]&十六数[3]&十六数[2]&十六数[1]&十六数[0]
else
if(十六数[6]!=0)
d=十六数[6]&十六数[5]&十六数[4]&十六数[3]&十六数[2]&十六数[1]&十六数[0]
else
if(十六数[5]!=0)
d=十六数[5]&十六数[4]&十六数[3]&十六数[2]&十六数[1]&十六数[0]
else
if(十六数[4]!=0)
十六数[4]&十六数[3]&十六数[2]&十六数[1]&十六数[0]
else
if(十六数[3]!=0)
d=十六数[3]&十六数[2]&十六数[1]&十六数[0]
else
if(十六数[2]!=0)
d=十六数[2]&十六数[1]&十六数[0]
else
if(十六数[1]!=0)
d=十六数[1]&十六数[0]
else
if(十六数[0]!=0)
d0=十六数[0]
endif
endif
endif
endif
endif
endif
endif
endif
复制代码
作者:
地狱骑士
时间:
2014-11-8 17:36
针对你第二段代码
变量 d=数组[7]
d[0]=d0,d[1]=d1,d[2]=d2,d[3]=d4,d[4]=d4,d[5]=d5,d[6]=d6,d[7]=d7,
for(i=7;i<0;i--)
if(十六数[i]!=0)
d[i]=十六数[i]
for(ii=i-1;i<0;i--)
d[ii]=字符串.连接(d[ii+1],十六数[ii])
endfor
跳出
endif
endfor
复制代码
欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/)
Powered by Discuz! X3.1