VS2010下 字符串各进制之间的转换
2014-05-03 13:54
337 查看
忘了是从哪个程序中看到了,谢谢那位朋友的无私奉献。记录在这,以备后用。
1、16进制转换成2进制数
2、16进制转换成10 进制数
3、10进制转换成2进制数
4、2进制转换为10进制数
5.2进制转换成16进制数
1、16进制转换成2进制数
CString CSetDlg::HexToBinary(CString strHex) { int nLenth = strHex.GetLength(); char* Hex = new char[nLenth]; Hex = strHex.GetBuffer(0); CString strBinary = ""; for(int i=0;i<nLenth;i++) { //转换一位十六进制数为十进制 char h = Hex[nLenth-1-i]; int j = BtoH(h); CString str; str.Format("%d",j); //转换十进制为4为二进制 str = DecimalToBinary(str); strBinary = str + strBinary; } return strBinary; }
2、16进制转换成10 进制数
unsigned char CSetDlg::BtoH(char ch) { //0-9 if (ch >= '0' && ch <= '9') return (ch- '0'); //9-15 if (ch >= 'A' && ch <= 'F') return (ch - 'A' + 0xA); //9-15 if (ch >= 'a' && ch <= 'f') return (ch - 'a' + 0xA); return (0); }
3、10进制转换成2进制数
CString CSetDlg::DecimalToBinary(CString strDecimal) { int nDecimal = atoi(strDecimal.GetBuffer(0)); int nYushu; //余数 int nShang; //商 CString strBinary = ""; char buff[2]; CString str = ""; BOOL bContinue = TRUE; while(bContinue) { nYushu = nDecimal%2; nShang = nDecimal/2; sprintf(buff,"%d",nYushu); str = strBinary; strBinary.Format("%s%s",buff,str); nDecimal = nShang; if(nShang==0) bContinue = FALSE; } int nLength = strBinary.GetLength(); CString strb = strBinary; //位数不是四的倍数时补齐 switch(nLength%4) { case 0: break; case 1: strBinary.Format("%d%d%d%s",0,0,0,strb); break; case 2: strBinary.Format("%d%d%s",0,0,strb); break; case 3: strBinary.Format("%d%s",0,strb); break; default: return ""; break; } return strBinary; }
4、2进制转换为10进制数
CString CSetDlg::BinaryToDecimal(CString strBinary) { int nLenth = strBinary.GetLength(); char* Binary = new char[nLenth]; Binary = strBinary.GetBuffer(0); int nDecimal = 0; for(int i=0;i<nLenth;i++) { char h = Binary[nLenth-1-i]; char str[1]; str[0] = h; int j = atoi(str); for(int k=0;k<i;k++) { j=j*2; } nDecimal += j; } CString strDecimal; strDecimal.Format("%d",nDecimal); return strDecimal; }
5.2进制转换成16进制数
CString CSetDlg::BinaryToHex(CString strBinary) { int nLength = strBinary.GetLength(); CString str = strBinary; //位数不是四的倍数时补齐 switch(nLength%4) { case 0: break; case 1: strBinary.Format("%d%d%d%s",0,0,0,str); break; case 2: strBinary.Format("%d%d%s",0,0,str); break; case 3: strBinary.Format("%d%s",0,str); break; default: return ""; break; } CString strHex,str1; str1 = ""; nLength = strBinary.GetLength(); for(int i=1;i<=(nLength/4);i++) { //每四位二进制数转换为一十六进制数 str = strBinary.Left(4); CString strDecimal = BinaryToDecimal(str); int nDecimal = atoi(strDecimal.GetBuffer(0)); if(nDecimal<10) str1.Format("%d",nDecimal); else { char c = 'A' + (nDecimal-10); str1.Format("%c",c); } strHex += str1; strBinary = strBinary.Right(strBinary.GetLength()-str.GetLength()); } return strHex; }
相关文章推荐
- 字符串各进制之间的转换
- 基本类型与字符串以及进制之间转换
- 各种进制的字符串与数值之间的互相转换
- 字符串字符显示与16进制显示之间的相互转换
- 字符串字符显示与16进制显示之间的相互转换
- 字符串字符显示与16进制显示之间的相互转换
- iOS 一个在UDP/TCP通信时,对16进制、10进制、NSData等数据之间的转换发送等处理的工具类库,一行代码将16进制字符串轻松转换成UDP需要的指令数据
- toString()方法对数字与关键字parseInt()方法对带有数字的字符串中数字进制之间转换-学习笔记
- 如何在各种字符串类型之间进行转换(VS2010)
- oracle 时间和字符串之间的互相转换
- C++中数字与字符串之间的转换
- 解析JSON对象与字符串之间的相互转换
- java实现图片与base64字符串之间的转换
- iOS 浮点型数据和字符串与字节数组之间的转换
- 基本类型与字符串之间的转换
- C#中使用强制类型实现字符串和ASCII码之间的转换
- asii和unicode格式字符串之间的相互转换
- 10进制数和16进制字符串 相互转换
- C# 16进制与字符串、字节数组之间的转换
- JS 中 JSON 对象与字符串之间的相互转换