易码技术论坛

 找回密码
 加入易码
搜索
查看: 1472|回复: 6

[源码] 简单的16进制编译源码(星端)

[复制链接]
发表于 2008-2-15 22:27:50 | 显示全部楼层 |阅读模式
因为还没做好~故发了最原始的上来~

哪些不足或错的请大家指教~!
  1. char fp;

  2. long openfile(int o){
  3. char i,l;
  4. char fname[20];
  5. char noww[60];

  6. memset(fname,0,20);memset(noww,0,60);
  7. strcat(fname,o);
  8. if(ChDir(fname)){
  9. strcat(noww,fname);strcat(noww,"/");
  10. }
  11. else ChDir("/");

  12. while(1){
  13.   if (FileList(fname)){
  14.     if(!strcmp(fname,"..")){
  15.     if(!strcmp(fname,"..")&&strlen(noww)==1)return '0';
  16.     for(i=strlen(noww);noww[i]!='/'&&i>0;i--){
  17.     if(i<0)noww[i]=0;else strcpy(noww,"/");
  18.     ChDir(noww);
  19.     }
  20.    
  21.     continue;
  22.     }//..
  23.     if(ChDir(fname)){strcat(noww,fname);strcat(noww,"/");}
  24.     else {strcat(noww,fname);return noww;}
  25.   }//if
  26.   else {
  27.     if(strlen(noww)==1)return '0';
  28.   for(i=strlen(noww);noww[i]!='/'&&i>0;i--){
  29.     if(i<0)noww[i]=0;else strcpy(noww,"/");
  30.     ChDir(noww);

  31.   }
  32.   }

  33. }
  34. }



  35. int sl(long x){
  36. int i,l,o;
  37. char ts[100],zf[100];
  38. memset(zf,0,100);
  39. strcpy(ts,x);
  40. i=strlen(ts);
  41. for(l=0;l<i;l++){
  42. if(ts[l]/16==0)strcat(zf,"0");
  43. if(ts[l]/16==1)strcat(zf,"1");
  44. if(ts[l]/16==2)strcat(zf,"2");
  45. if(ts[l]/16==3)strcat(zf,"3");
  46. if(ts[l]/16==4)strcat(zf,"4");
  47. if(ts[l]/16==5)strcat(zf,"5");
  48. if(ts[l]/16==6)strcat(zf,"6");
  49. if(ts[l]/16==7)strcat(zf,"7");
  50. if(ts[l]/16==8)strcat(zf,"8");
  51. if(ts[l]/16==9)strcat(zf,"9");
  52. if(ts[l]/16==10)strcat(zf,"A");
  53. if(ts[l]/16==11)strcat(zf,"B");
  54. if(ts[l]/16==12)strcat(zf,"C");
  55. if(ts[l]/16==13)strcat(zf,"D");
  56. if(ts[l]/16==14)strcat(zf,"E");
  57. if(ts[l]/16==15)strcat(zf,"F");
  58. o++;



  59. if(ts[l]%16==0)strcat(zf,"0");
  60. if(ts[l]%16==1)strcat(zf,"1");
  61. if(ts[l]%16==2)strcat(zf,"2");
  62. if(ts[l]%16==3)strcat(zf,"3");
  63. if(ts[l]%16==4)strcat(zf,"4");
  64. if(ts[l]%16==5)strcat(zf,"5");
  65. if(ts[l]%16==6)strcat(zf,"6");
  66. if(ts[l]%16==7)strcat(zf,"7");
  67. if(ts[l]%16==8)strcat(zf,"8");
  68. if(ts[l]%16==9)strcat(zf,"9");
  69. if(ts[l]%16==10)strcat(zf,"A");
  70. if(ts[l]%16==11)strcat(zf,"B");
  71. if(ts[l]%16==12)strcat(zf,"C");
  72. if(ts[l]%16==13)strcat(zf,"D");
  73. if(ts[l]%16==14)strcat(zf,"E");
  74. if(ts[l]%16==15)strcat(zf,"F");
  75. o++;


  76. }
  77. return zf;

  78. }








  79. void main(){
  80. char f,sstr[50],show[30],shoo[30],ch,tmp,new,tt[1000];
  81. int x,y,i;
  82. long l,k,d,nowp,hh[5];

  83. i=openfile("/");
  84. fp=fopen(i,"r+");
  85. if(!fp)exit(0);

  86. y=y+2;hh[0]=0;
  87. k=fseek(fp,0,2);k=k-1;
  88. printf("%d",k);

  89. getchar();
  90. rewind(fp);
  91. while(1){
  92. k=fseek(fp,0,2);k=k-1;
  93. rewind(fp);

  94. if(new==2){if(hh[4]>=k-8);else hh[0]=hh[1];;}
  95. if(new==1)hh[0]=hh[0]-8;
  96. ClearScreen();

  97. for(i=0;i<5;i++){
  98. if(nowp>=hh[i])y=i;
  99. hh[i+1]=hh[i]+8;
  100. }

  101. for(i=0;i<5;i++){
  102. memset(show,0,30);

  103. if(hh[4]>=k){hh[0]=k-40;}
  104. if(nowp>k)x=k%8*12;
  105. else x=(nowp-hh[y])*12;
  106. fseek(fp,hh[i],0);
  107. fread(show,1,8,fp);
  108. l=sl(show);
  109. TextOut(1,i*13+2,l,1);
  110. TextOut(105,i*13+1,show,1);
  111. sprintf(sstr,"%d",nowp);
  112. TextOut(1,70,sstr,1);
  113. }

  114. Block(x,y*13+1,x+12,y*13+13,2);

  115. Refresh();new=0;
  116. ch=getchar();

  117. if(ch==30){
  118. l=ss();if(l=='0')continue;
  119. SetScreen(1);
  120. printf("%d",l);getchar();
  121. nowp=l;
  122. hh[0]=l-l%8;continue;
  123. }
  124. if(ch==20){
  125. if(hh[0]==0&&nowp<hh[1]){hh[0]=0;continue;}
  126. nowp=nowp-8;
  127. if(y==0){new=1;continue;}
  128. }//20结束

  129. else if(ch==21){

  130. if(y==4)new=2;
  131.   nowp=nowp+8;
  132.   if(nowp>=k){nowp=k;continue;}
  133.   }//21结束
  134.   else if(ch==23){
  135.   if(hh[0]==0&&nowp<=hh[0]){hh[0]=0;nowp=0;continue;}
  136. if(nowp<=hh[0]){new=1; nowp--;continue;}
  137.    nowp--;
  138.   }//23结束
  139. else if(ch==22){
  140. if(nowp==k)continue;
  141.   if(nowp==hh[4]+7){nowp=nowp+8;new=2;continue;}
  142.   nowp++;
  143.   
  144.   }//22结束

  145. if(k<8)hh[0]=hh[0]-40;
  146. if(ch==13){
  147. l=input("请输入替换的字符串");
  148. strcpy(shoo,l);
  149. fseek(fp,nowp,0);
  150. fwrite(shoo,1,strlen(shoo),fp);
  151. }



  152. if(ch==27){fclose(fp);exit(0);}

  153. }//while结束


  154. }//main结束
复制代码
发表于 2008-2-16 18:48:35 | 显示全部楼层
沙发,帮你顶顶
发表于 2008-2-24 12:44:17 | 显示全部楼层
...两串if。。。。。
发表于 2008-2-24 12:51:36 | 显示全部楼层
...
char a[2];
...
a[0]=ts[l]>>4;
...
if(isdigit(a[0]+0x30))strcat(zf,a);
else if(a[0]<16){a[0]=a[0]+'A'-10;strcat(zf,a);}
o++;
...

[ 本帖最后由 FrankHB 于 2008-2-24 12:57 编辑 ]
发表于 2008-2-24 12:53:20 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2008-2-24 14:13:41 | 显示全部楼层
LS的LS,你的签名????
发表于 2008-2-25 00:01:06 | 显示全部楼层

有什么不对吗?
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2024-4-25 03:10 , Processed in 0.009689 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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