首先看结果:
Input "0010001010111000"
Output "0001110101000100"
基于Qt实现的,主要是利用qt数值转字符串和字符串转数值的工能,直接上一段实现代码:
/**
* @brief reverseInt -- 将一个整数按位反转
* @param input -- 输入数据
* @param output -- 输出输出
* @return -- 转换是否成功
*/
template<class Tint>
bool reverseInt(const Tint &input, Tint &output) {
int bitsWidth = sizeof (input)*8;
QString inputStr = QString("%1").arg(QString::number(input, 2), bitsWidth, '0');
QString outputStr;
outputStr.resize(bitsWidth);
for (int i = 0; i < bitsWidth; i++){
outputStr.replace(i, 1, inputStr.at(bitsWidth-1-i));
}
bool ok;
output = static_cast<Tint>(outputStr.toULongLong(&ok, 2));
return ok;
}
测试代码:
int main(int argc, char **argv)
{
QApplication a(argc, argv);
quint16 in = 8888;
quint16 out;
if (reverseInt(in, out)){
qDebug() << "Input " << QString("%1").arg(QString::number(in, 2), sizeof (in)*8, '0');
qDebug() << "Output" << QString("%1").arg(QString::number(out, 2), sizeof (in)*8, '0');
}else {
qDebug() << "Reserve false!";
}
a.exec();
}
最后附上工程连接: