#include <iostream>#include <cstdio>#include <cstring>#include <string>using namespace std;char translate( char ch){ if (ch>='A' && ch<='Z') ch = ch + 32; else if (ch>='a' && ch<='z') ch = ch - 32; return ch;}string addr( int temp){ int i,j,k; string s="0"; i = temp / 256; if (i<=9) s = s + char( '0'+i); else if (i==10) s += 'a'; else if (i==11) s+= 'b'; else if (i==12) s+= 'c'; else if (i==13) s+= 'd'; else if (i==14) s+= 'e'; else if (i==15) s+= 'f'; i = (temp %256)/16; if (i<=9) s = s + char( '0'+i); else if (i==10) s += 'a'; else if (i==11) s+= 'b'; else if (i==12) s+= 'c'; else if (i==13) s+= 'd'; else if (i==14) s+= 'e'; else if (i==15) s+= 'f'; s+="0:"; return s;}string To_16(int temp){ string s=""; int i; i = temp / 16; if (i<=9) s = s + char( '0'+i); else if (i==10) s += 'a'; else if (i==11) s+= 'b'; else if (i==12) s+= 'c'; else if (i==13) s+= 'd'; else if (i==14) s+= 'e'; else if (i==15) s+= 'f'; i = (temp %256)%16; if (i<=9) s = s + char( '0'+i); else if (i==10) s += 'a'; else if (i==11) s+= 'b'; else if (i==12) s+= 'c'; else if (i==13) s+= 'd'; else if (i==14) s+= 'e'; else if (i==15) s+= 'f'; return s;}char a[5000];int main(){ int i, j, row,len,last,pos; while (gets(a)) { len = strlen(a); if (len==0) break; pos = 0; last=-1; for (i=0;i<len;i++) { if (i % 16==0) { cout << addr(i); pos=0; } if (i%2==0) printf(" "); cout << To_16(a[i]); pos++; if (i%16==15) { printf(" "); for (j=last+1;j<=i;j++) printf("%c",translate(a[j])); puts(""); last=i; } } if (pos!=16) { for (i=1;i<=(16-pos)*2+(16-pos)/2;i++) printf(" "); printf(" "); for (j=last+1;j<len;j++) printf("%c",translate(a[j])); puts(""); } } return 0;}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)