将任意值转二进制输出。
本质上,在机器内部数据都由二进制存储,调试可见为十六进制。所以其实不需要太复杂的运算,只需要将其转为一个字符串即可。
QString toBit(const char *src,int size)
{
QString sRet = "";
unsigned long long ll = 0;
int temp = sizeof(ll);
int iSize = (size < temp && size > 0) ? size : temp;
memcpy(&ll,src,iSize);
for(int i = 0; i < iSize*8; ++i)
{
unsigned char uc = ll & 0x01;
if(0x01 == uc)
sRet.push_front('1');
else
sRet.push_front('0');
ll >>= 1;
}
return sRet;
}
输出测试:
int i = 10;
QString s = toBit((const char *)&i,sizeof(i));
qDebug() << s;
测试结果:
"00000000000000000000000000001010"