#include <iostream>#include<string>#include<stdint.h>using namespacestd;stringBintohex (Const string&strbin,BOOLBisupper =false){ stringStrhex; Strhex.resize (Strbin.size ()*2); for(size_t i =0; I < strbin.size (); i++) {uint8_t ctemp=Strbin[i]; for(size_t j =0; J <2; J + +) {uint8_t CCur= (Ctemp &0x0f); if(CCur <Ten) {CCur+='0'; } Else{CCur+ = (bisupper?'A':'a') -Ten); } strhex[2* i +1-J] =CCur; Ctemp>>=4; } } returnStrhex;}stringHextobin (Const string&Strhex) { if(Strhex.size ()%2!=0) { return ""; } stringStrbin; Strbin.resize (Strhex.size ()/2); for(size_t i =0; I < strbin.size (); i++) {uint8_t ctemp=0; for(size_t j =0; J <2; J + +) { CharCCur = strhex[2* i +J]; if(CCur >='0'&& CCur <='9') {ctemp= (Ctemp <<4) + (CCur-'0'); } Else if(CCur >='a'&& CCur <='F') {ctemp= (Ctemp <<4) + (CCur-'a'+Ten); } Else if(CCur >='A'&& CCur <='F') {ctemp= (Ctemp <<4) + (CCur-'A'+Ten); } Else { return ""; }} Strbin[i]=ctemp; } returnStrbin;}intMain () {stringStrbin ="[Email protected]#$%^&* () _+~ ' 1234567890-="; stringStrhex ="21402324255e262a28295f2b7e60313233343536373839302d3d"; stringStrbintohex =Bintohex (Strbin); cout<< Strbintohex <<Endl; Strbintohex= Bintohex (Strbin,true); cout<< Strbintohex <<Endl; stringStrhextobin =Hextobin (Strhex); cout<< Strhextobin <<Endl; return 0;}
"Reprint" Http://www.cnblogs.com/glacierh/p/4570080.html
binary hexadecimal conversion (C + +)