/**--------------------
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;
}