1. 程式人生 > >用8進位制和16進位制建立字串

用8進位制和16進位制建立字串

開始

#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;
}

完。