1、C和C++都没有提供二进制数的表达方法。
2、C,C++语言中,如何表达一个八进制数呢?
? ? ?如果这个数是 876,我们可以断定它不是八进制数,因为八进制数中不可能出7以上的阿拉伯数字。但如果这个数是123、是567,或12345670,那么它是八进制数还是10进制数,都有可能。
? ? ?所以,C,C++规定,一个数如果要指明它采用八进制,必须在它前面加上一个0,如:123是十进制,但0123则表示采用八进制。
? ? ?int 0123;
? ? ?这就是八进制数在C、C++中的表达方法。但是有一个例外就是转意符'\'。
? ? ?因为C,C++规定不允许使用斜杠加10进制数来表示字符,所以?:
?
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进制值
?
?
4)QString 按照字符串表面格式 转换成16进制
?
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进制值?
?
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进制值,打印
?
?
QChar c = 0x0A; QByteArray array; array.append(c); qDebug() << array.toHex();//结果是"0a"
?6)char* 存储16进制,打印
?
char c[] = {0x0A,0x0B,'\0'}; QByteArray array(c); qDebug() << array.toHex();//结果 "0a0b"
?
?