C++中的二进制、八进制、十六进制表达

1、C和C++都没有提供二进制数的表达方法。

2、C,C++语言中,如何表达一个八进制数呢

如果这个数是 876,我们可以断定它不是八进制数,因为八进制数中不可能出7以上的阿拉伯数字。但如果这个数是123、是567,或12345670,那么它是八进制数还是10进制数,都有可能。

所以,C,C++规定,一个数如果要指明它采用八进制,必须在它前面加上一个0,如:123是十进制,但0123则表示采用八进制。

int 0123;

这就是八进制数在C、C++中的表达方法。但是有一个例外就是转意符'\'。

因为C,C++规定不允许使用斜杠加10进制数来表示字符,所以 :

'?' //ASCII值是63
'\077' //是8进制表示'?',0可以省略,因为C,C++规定不允许使用斜杠加10进制数来表示字符
'\0x3F' //是16进制表示'?'

3、 C,C++规定,16进制数必须以 0x开头

int 0x15A

其中的x也也不区分大小写。(注意:0x中的0是数字0,而不是字母o)。

注:

1) 8进制和16进制只能用达无符号的正整数,如果你在代码中里:-078,或者写:-0xF2,C,C++并不把它当成一个负数。

2) Qt中把十进制整型值转换成16进制 的字符串方法。

int a = 63;

QString s = QString::number(a, 16); // s == "3f"

QString t = QString::number(a, 16).toUpper(); // t == "3F"

3) QString 存储16进制值

  1. //将字符串以16进制形式输出
  2. QString cmd = 0x0a;
  3. qDebug() <<" cmd:"<< cmd.toAscii().toHex();

4)QString 按照字符串表面格式 转换成16进制

Cpp代码 
  1. QString str = "FF";
  2. bool ok;
  3. int hex = str.toInt(&ok, 16); // hex == 255, ok == true 0xFF
  4. int dec = str.toInt(&ok, 10); // dec == 0, ok == false
     QString str = "FF";     bool ok;     int hex = str.toInt(&ok, 16);       // hex == 255, ok == true 0xFF     int dec = str.toInt(&ok, 10);       // dec == 0, ok == false

4) QByteArray 存储16进制值

Cpp代码 
  1. static const char mydata[] = {
  2. 0x00, 0x00, 0x03, 0x84, 0x78, 0x9c, 0x3b, 0x76,
  3. 0xec, 0x18, 0xc3, 0x31, 0x0a, 0xf1, 0xcc, 0x99,
  4. 0x6d, 0x5b
  5. };
  6. QByteArray bd = QByteArray::fromRawData(mydata, sizeof(mydata));
  7. qDebug() <<"bd.data:" <<bd.data();
  8. qDebug() <<"bd.toHex():"<<bd.toHex();//输出16进制值
static const char mydata[] = {		0x00, 0x00, 0x03, 0x84, 0x78, 0x9c, 0x3b, 0x76,		0xec, 0x18, 0xc3, 0x31, 0x0a, 0xf1, 0xcc, 0x99,		0x6d, 0x5b	};	QByteArray bd = QByteArray::fromRawData(mydata, sizeof(mydata));	qDebug() <<"bd.data:" <<bd.data();	qDebug() <<"bd.toHex():"<<bd.toHex();//输出16进制值

5) QChar 存储16进制值,打印

Cpp代码 
  1. QChar c = 0x0A;
  2. QByteArray array;
  3. array.append(c);
  4. qDebug() << array.toHex();//结果是"0a"
QChar c = 0x0A;QByteArray array;array.append(c);qDebug() << array.toHex();//结果是"0a"

6)char* 存储16进制,打印


Cpp代码 
  1. char c[] = {0x0A,0x0B,'\0'};
  2. QByteArray array(c);
  3. qDebug() << array.toHex();//结果 "0a0b"
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值