控制好格式就好了.
printf的%x很方便.
#include <iostream>
#include <cstdio>
#include <memory.h>
using namespace std;
const int maxn=4100;
char buf[maxn];
int main(){
while (gets(buf)&&strcmp(buf,"")){
int len=strlen(buf);
for (int i=0;i<len;i+=16){
if(i%16==0){
printf("%04x:",i);
}
int j=i,idx=5;
for (;j<i+16&&j<len;j++){
if(j%2==0){
printf(" ");
++idx;
}
printf("%x",buf[j]);
idx+=2;
}
for (;idx<=45;++idx){//padding
printf(" ");
}
for (int j=i;j<i+16&&j<len;++j){
if(islower(buf[j]))buf[j]=toupper(buf[j]);
else if(isupper(buf[j]))buf[j]=tolower(buf[j]);
printf("%c",buf[j]);
}
printf("\n");
}
}
return 0;
}