QT--进制转换

本文为学习记录,若有错误,请联系作者,谦虚受教

前言

你主要的问题在于读书太少而想得太多


一、转换十六进制


方法1int n1=this->ui->speed->text().toInt();
QString hex=QString("%1").arg(n1,4,16);//加上QLatin1Char('0'),不足补0
方法2int n1=this->ui->speed->text().toInt(); 
QString a=QString::number(n1,16);
方法3、    
uchar speedBuf[]={0};
QString str =this->ui->speed->text();//获取发送的信息        
QString hex = QString("%1").arg(str.toInt(), 4,16,QLatin1Char('0'));//不足补0
uchar u1 = uchar(hex.left(2).toInt(nullptr,16));//前两位
uchar u2 = uchar(hex.right(2).toInt(nullptr,16));//后两位
speedBuf[3]=u2;

二、uchar->float

                uchar rs[4];
                rs[0]=rcvBuf[6];
                rs[1]=rcvBuf[7];
                rs[2]=rcvBuf[8];
                rs[3]=rcvBuf[9];
                float FF_Co2;
                memcpy_s(&FF_Co2,sizeof (float),rs,4);
                QString Str_Co2 = QString::number(FF_Co2);
                ui->gas11->setText(Str_Co2);

三、float->string

                float FF_Co2;
                QString Str_Co2 = QString::number(FF_Co2);

四、QByteArray->char*

1 char *ch;//不要定义成ch[n];
2 QByteArray byte;
3 ch = byte.data();

五、char*->QByteArray

1 char *ch;
2 QByteArray byte;
3 byte = QByteArray(ch); 

六、string->char*

// string转char *
string st = "My test";
char *st1 = const_cast<char *>(st.c_str()) ;

七、char*->string

// char*转换为string
// (注意,定义char *变量,并直接赋值,最好定义为const变量,否则编译器警告)
const char *st = "hello";
// 赋值转换
string st1 = st;
cout << st1 << endl;
// 构造转换
string s1(st, st + strlen(st));

总结

善于总结,多进一步。

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的进制转换界面示例代码: ```c++ #include <QApplication> #include <QWidget> #include <QGridLayout> #include <QLabel> #include <QLineEdit> #include <QPushButton> class MainWindow : public QWidget { public: MainWindow(QWidget *parent = nullptr) : QWidget(parent) { // 设置界面标题 setWindowTitle("进制转换器"); // 设置界面布局 QGridLayout *layout = new QGridLayout(this); layout->setColumnStretch(0, 1); layout->setColumnStretch(1, 0); layout->setColumnStretch(2, 1); // 添加输入框和标签 QLabel *decimalLabel = new QLabel("十进制数:", this); layout->addWidget(decimalLabel, 0, 0); decimalEdit = new QLineEdit(this); decimalEdit->setPlaceholderText("请输入十进制数"); layout->addWidget(decimalEdit, 0, 1); QLabel *binaryLabel = new QLabel("二进制数:", this); layout->addWidget(binaryLabel, 1, 0); binaryEdit = new QLineEdit(this); binaryEdit->setPlaceholderText("换结果"); binaryEdit->setReadOnly(true); layout->addWidget(binaryEdit, 1, 1); // 添加换按钮 QPushButton *convertButton = new QPushButton("换", this); layout->addWidget(convertButton, 0, 2, 2, 1); // 连接换按钮的信号和槽函数 connect(convertButton, &QPushButton::clicked, this, &MainWindow::convert); } private slots: void convert() { // 获取输入的十进制数 QString decimalStr = decimalEdit->text(); bool ok; int decimal = decimalStr.toInt(&ok); if (!ok) { binaryEdit->setText("非法输入"); return; } // 将十进制数换为二进制数 QString binaryStr = QString::number(decimal, 2); binaryEdit->setText(binaryStr); } private: QLineEdit *decimalEdit; QLineEdit *binaryEdit; }; int main(int argc, char *argv[]) { QApplication app(argc, argv); MainWindow window; window.show(); return app.exec(); } ``` 这个界面有两个输入框和一个换按钮。用户输入一个十进制数,点击换按钮后将其换为二进制数,并在另一个输入框中显示换结果。 注意,在换函数中,我们使用了 `QString::number` 函数将十进制数换为二进制数。这个函数的第二个参数是进制数,例如,如果要将十进制数换为八进制数,可以将第二个参数设为 8。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值