用8進位制和16進位制建立字串
阿新 • • 發佈:2019-01-26
開始
#include <string> // 8進位制Oct(octonary) //10進位制Dec(decimal) //16進位制Hex(hexadecimal) int main() { //我想將一個16/8/10進位制的數字賦值給一個int: //16進位制的數字,開頭是0x // 8進位制的數字,開頭是0 //10進位制的數字,是什麼就寫什麼(別以0開頭,以0開頭,就成八進位制了) int i; if (true) { //十六進位制 i = 0xff; i = 0xFF; //i = 0xfg;//error C2059: syntax error : 'bad suffix on number' i = 0x0f0000000000000f;//溢位了,結果是15 } if (true) { //八進位制 i = 0315; i = 00000315; //i = 03158;//error C2041: illegal digit '8' for base '8' } if (true) { //用十六進位制建立字串 std::string str16_1("\xffZXCV"); // 其字元序列為【-1,'Z','X','C','V'】 //std::string str16_2("\xfffZXCV"); // error C2022: '4095' : too big for character //因為0xfff的十進位制值為4095,而將4095賦值給一個char又太大了,所以報錯。 //它告訴我們,直接建立一個字串,其字元序列為【-1,'f','Z','X','C','V'】,用16進位制是不可行的。 //它告訴我們,用十六進位制無法通用的建立一個字串。 } if (true) { //用八進位制建立字串 std::string str8_1("\77890"); // 字元序列【63,'8','9','0'】,八進位制的77是十進位制的63 //std::string str8_2("\777890");// error C2022: '511' : too big for character std::string str8_3("\0777890"); // 字元序列為【63,'7','8','9','0'】 //它告訴我們,用八進位制可以通用的建立一個字串。 //例:我要建立字串【<SOH>35=5<SOH>】,其中<SOH>的值是0x01,是start of headline的意思。 std::string strTest1("\00135=5\001"); // 字元序列【1,'3','5','=','5',1】 std::string strTest2("\00135=5\1"); // 字元序列【1,'3','5','=','5',1】 std::string strTest3("\135=5\001"); // 字元序列為 【93,'=','5',1】 //所以,建立字串時,每個字元用一個八進位制的三位數字表示,數字之前加上反斜槓, //儘量嚴格遵守“八進位制用3位數表示,不足三位前補零的原則”。 } return 0; }
完。