c++ 值转换
1.double,float 四舍五入,保留小数位数。
void MainWindow::on_pushButton_clicked()
{
double number=3.141592;
double result=MyRound(number,);
qDebug()<<result;//3.142
}
#include <iostream>
#include <sstream>
#include <iomanip>
double MainWindow::myRound(double number, unsigned int bits)
{
std::stringstream ss;
ss << std::fixed << std::setprecision(bits) << number;
ss >> number;
return number;
}
2.std::to_string 数字转换成string,C++11才支持此函数,转换后小数位数是6位,无法控制小数保留位数。使用的时候可以先四舍五入后,再使用to_string 转换字符串,截取。
float number=3.14;
std::string str=std::to_string(number);//3.140000
qDebug()<<QString::fromStdString(str);
获得指定保留小数位数的字符串
void MainWindow::on_pushButton_clicked()
{
float number=3.141592;
number=MyRound(number,);//3.142
std::string str=std::to_string(number);//3.142000
str=str.substr(,str.find('.')+);//"3.142"
qDebug()<<QString::fromStdString(str);
} float MainWindow::MyRound(float number,unsigned int bits)
{
std::stringstream ss;
ss << std::fixed << std::setprecision(bits) << number;
ss >> number;
return number;
}
3.std::stoi/stol/stoll 函数,字符串转换成整数,但不会四舍五入。
string str1="12.76";
int i1=stoi(str1);//
qDebug()<<i1;
4.ascii值转换16进制。例如:456转换成0x456
uint8_t uavcan_centeral::parseHex(uint8_t* line, uint8_t len, uint32_t* value)
{
*value = ;
while (len--) { if (*line == )
{
return ;
}
*value <<= ;
if ((*line >= '') && (*line <= ''))
{
*value += *line - '';
}
else if ((*line >= 'A') && (*line <= 'F'))
{
*value += *line - 'A' + ;
}
else if ((*line >= 'a') && (*line <= 'f'))
{
*value += *line - 'a' + ;
}
else
{
return ;
} line++;
}
return ;
}
使用:
uint8_t *id=new uint8_t[];
id[]=;//
id[]=;//
id[]=;//
uint32_t v;
parseHex(&id[],,&v);
qDebug()<<"v:"<<v;//v: 1110
4.int转化16进制的字符串
#include <sstream>
#include <string>
std::string MainWindow::dec2hex(int dec, int width)
{
std::stringstream ioss; //定义字符串流
std::string s_temp; //存放转化后字符
ioss << std::hex <<dec; //以十六制形式输出
ioss >> s_temp;
std::string s(width - s_temp.size(), ''); //补0
s += s_temp; //合并
return s;
}
使用:
int dec=;
qDebug()<<dec2hex(dec,).c_str();
输出:01e240
5.数组转换16进制字符串
#include <iostream>
#include <sstream>
#include <iomanip>
#include <string>
#include <stdio.h>
std::string MainWindow::binToHexString(const unsigned char *data,size_t size)
{
std::ostringstream strHex;
strHex << std::hex << std::setfill('');
for (size_t i = ; i < size; ++i)
{
strHex << std::setw()<<std::setiosflags(std::ios::uppercase)<<static_cast<unsigned int>(data[i])<<' ';
}
return strHex.str();
}
使用
unsigned char*data=new unsigned char[];
data[]=0x11;
data[]=0x02;
data[]=0x03;
data[]=0x04;
data[]=0x05;
data[]=0x0A;
data[]=0x0D;
unsigned long send_size= serialPort->send(data,);
ui->teMsg->append(QString::fromStdString(binToHexString(data,)));
输出:11 02 03 04 05 0A 0D
6.ascii(字符串)转换整数或16进制数。(SLCAN 串口转CAN 用到)
std::string str="t023";
int size=str.size();
for(int i=;i<size;i++)
{
qDebug()<<QString::number(charToHex(str[i]),);
} uint8_t MainWindow::charToHex(uint8_t ch)
{ if((ch>=)&&(ch<=))
{
ch +=0x30;
}
else if((ch>=)&&(ch <=))//大写字母
{
ch +=0x37;
}
return ch;
}
7.16进制的字符串转换数值
long MainWindow::asciiToHexValue(std::string line, uint8_t len)
{
long value=;
for(int i=;i<len;i++)
{
value<<=;
char c=(char)line[i];
if ((c >= 'A') && (c <= 'Z'))
{
value+= c - 'A' + ;
}
else if ((c >= 'a') && (c <= 'z'))
{
value+= c - 'a' + ;
}
else if ((c >= '') && (c <= ''))
{
value+= c - '';
} }
return value;
}
qDebug()<<"asciiToHexValue:"<<asciiToHexValue("F7F3",4);
asciiToHexValue: 63475
8.数值转换ASCII 字符
std::string DataWidget::hexToAscii(const std::vector<uint8_t> &data)
{
std::string str="";
uint size=data.size();
for(uint i=;i<size;i++)
{
str+=(char)data[i];
}
return str;
}
9.2个8位数据high、low合成一个16位数据
2个8位数据high、low合成一个16位数据s:
s = (short) (high << ) | low;
一个16位数据s拆分成2个8位数据high、low:
high = (s >> ) & 0xff; //高8位
low = s & 0xff; //低8位
10.两个字节转换整数,高字节在前
uint8_t data[]={0x1E,0x00};
uint16_t value=(uint16_t)(data[]<<)+data[];
11.如果是有符合(正负)的两个字节转换整数,高字节在前
uint8_t data[]={0xff,0xff};
int16_t value=(int16_t)(data[]<<)+data[];
c++ 值转换的更多相关文章
- ios 把毫秒值转换成日期 NSDate
ios 把毫秒值转换成日期 (比较好用) 1343359790000 这是毫秒值------最佳解决方案-------------------- long long time=134335979000 ...
- Web API-如何将Controller的返回值转换成HTTP response消息
https://www.asp.net/web-api/overview/formats-and-model-binding/json-and-xml-serialization https://co ...
- 分享:根据svg节点对象类型和路径值转换坐标值
功能用处: 对svg文件的路径节点填充时会使用(相邻两个坐标区域内的四边形的填充颜色不重复). 需要对svg文件中的Path节点或者 Polyline 节点做颜色填充.并且相邻的两个区域之间的颜色不允 ...
- sql 在将 nvarchar 值 转换成数据类型 int 时失败。
假设有存储过程:proc_test2 create proc proc_test2 @Id int begin as declare @sql varchar(max) @sql = 'select ...
- json字符串转换成json对象,json对象转换成字符串,值转换成字符串,字符串转成值
一.json相关概念 json,全称为javascript object notation,是一种轻量级的数据交互格式.采用完全独立于语言的文本格式,是一种理想的数据交换格式. 同时,json是jav ...
- python文本 字符与字符值转换
python文本 字符与字符值转换 场景: 将字符转换成ascii或者unicode编码 在转换过程中,注意使用ord和chr方法 >>> print(ord('a')) 97 ...
- Jquery把获取到的input值转换成json
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- [翻译] ColourClock 将时间值转换成背景色
ColourClock 将时间值转换成背景色 https://github.com/bennyguitar/ColourClock This project converts Time to Hex/ ...
- WPF值转换实例
WPF绑定功能非常方便,有时候点击某值时在另t一处显示此值的另一表现形式或调用其对应的其它值,用WPF值转换功能会很方便,下面就一LISTBOX和TEXTBLOCK控件,把LISTBOX中的值转换成除 ...
随机推荐
- 使用 highlight.js 在网页中高亮显示java 代码 【原】
<html> <head> <meta charset="UTF-8"> <script src="http://apps.bd ...
- jquery遇到的问题
1.关于$.fn $.fn是指jquery的命名空间,加上fn上的方法及属性,会对jquery实例每一个有效. 如扩展$.fn.abc(),即$.fn.abc()是对jquery扩展了一个abc方法, ...
- MVC |分部视图 PartialView()
介绍如何定义 其实它和普通视图没有多大区别,只是创建分部视图的时候视图里没有任何内容,你需要什么标签你自己加.第二就是分部视图不会执行_ViewStart.cshtml中的内容) 控制器 Partia ...
- 深度理解PHP中for与foreach两个循环结构遍历数组的区别
遍历一个数组是编程中最常见不过的了,这里讨论下for和foreach两种方法: 首先,我们先准备两个用于遍历的数组: $arr1=array(1=>'a', 3=>22, 5=>'b ...
- dbms_redefinition在线重定义表结构 可以在表分区的时候使用
dbms_redefinition在线重定义表结构 (2013-08-29 22:52:58) 转载▼ 标签: dbms_redefinition 非分区表转换成分区表 王显伟 在线重定义表结构 在线 ...
- Java Web之JSTL标准标签库总结
[文档整理系列] Java Web之JSTL标准标签库总结
- [C++]PAT乙级1004. 成绩排名 (20/20)
/* 1004. 成绩排名 (20) 读入n名学生的姓名.学号.成绩,分别输出成绩最高和成绩最低学生的姓名和学号. 输入格式:每个测试输入包含1个测试用例,格式为 第1行:正整数n 第2行:第1个学生 ...
- TensorFlow从入门到理解(四):你的第一个循环神经网络RNN(分类例子)
运行代码: import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data # set rando ...
- JAVA进阶2
间歇性混吃等死,持续性踌躇满志系列-------------第2天 1.父类子类继承(注:一个JAVA源文件中只能有一个public类,public 类的名字必须和这个编译单元的文件名完全相同,包括大 ...
- 1 Java中的时间类型
总结:sql中的时间转 util的时间直接赋值即可:反过来,必须先吧util下的时间转换成毫秒,再通过sql的构造器生成sql的时间格式. 1 Java中的时间类型 java.sql包下给出三个与数据 ...