/**-------------------- 35 * @brief 十进制转二进制 36 * 37 * @param bstr 二进制字符串,不大与32位 38 * 39 * @return 出错返回-1,成功返回十进制数 40 --------------------*/ 41 int btod(char *bstr) 42 { 43 int d = 0; 44 unsigned int len = strlen(bstr); 45 46 if (len > 32) 47 return -1; //数位过长 48 len--; 49 50 int i = 0; 51 for (i = 0; i <= len; i++) 52 { 53 d += (bstr[i] - '0') * (1 << (len - i)); 54 } 55 56 return d; 57 } 58 59 60 /**-------------------- 61 * @brief 十进制转二进制 62 * 63 * @param d 十进制数,输入 64 * @param bstr 二进制字符串,输出 65 * 66 * @return 出错返回-1,成功返回字符串长度 67 --------------------*/ 68 int dtob(int d, char *bstr) 69 { 70 if (d < 0) 71 return -1; 72 73 int mod = 0; 74 char tmpstr[64]; 75 bzero(tmpstr, sizeof(tmpstr)); 76 bzero(bstr, sizeof(bstr)); 77 78 int i = 0; 79 while (d > 0) 80 { 81 mod = d % 2; 82 d /= 2; 83 tmpstr[i] = mod + '0'; 84 i++; 85 } 86 87 //复制字符串 88 unsigned int len = strlen(tmpstr); 89 for (i = 0; i < len; i++) 90 { 91 bstr[i] = tmpstr[len - i - 1]; 92 } 93 94 return (int)len; 95 }
加入自己修改的QT :
/*! * 十进制转化二进制 */ QBitArray MainWin::DecToBin(int d) { if ( d < 0 ) { return; } int mod = 0; QBitArray t_ary(6); t_ary.fill(false); int i = 0; while ( d > 0 ) { mod = d%2; d /= 2; if ( mod == 1 ) { t_ary.setBit(i,true); }else if ( mod == 0 ) { t_ary.setBit(i,false); } i++; } return QBitArray; }
/*! * 十进制转化二进制 */ QBitArray MainWin::DecToBin(int d) { if ( d < 0 ) { return; } int mod = 0; QBitArray t_ary(6); t_ary.fill(false); int i = 0; while ( d > 0 ) { mod = d%2; d /= 2; if ( mod == 1 ) { t_ary.setBit(i,true); }else if ( mod == 0 ) { t_ary.setBit(i,false); } i++; } return QBitArray; }