C++ 将奇怪的十六进制电话号码转换为正常数字

C++ 将奇怪的十六进制电话号码转换为正常数字,c++,c++11,hex,C++,C++11,Hex,我有一个电话号码,表示为:AA A3 AA A3 A7 A9 A7 A4 A9,我想把它转换成普通数字:0301379749?int main() int main() { std::string str = "\xAA\xA3\xAA\xA1\xA3\xA7\xA9\xA7\xA4\xA9"; for(unsigned i = 0; i < str.size(); i++) { if(str[i] == '\xAA') str[i] = '\x0

我有一个电话号码,表示为:
AA A3 AA A3 A7 A9 A7 A4 A9
,我想把它转换成普通数字:
0301379749

int main()
int main()
{
    std::string str = "\xAA\xA3\xAA\xA1\xA3\xA7\xA9\xA7\xA4\xA9";

    for(unsigned i = 0; i < str.size(); i++)
    {
        if(str[i] == '\xAA') str[i] = '\x00';
        str[i] = (str[i]&'\x0F') + '0';
    }

    //or
    std::for_each(str.begin(), str.end(), [](char &c)
    {
        if(c == '\xAA') c = '\x00';
        c = (c&'\x0F') + '0';
    });

    cout << str << endl;

    return 0;
}
{ std::string str=“\xAA\xA3\xAA\xA1\xA3\xA7\xA9\xA7\xA4\xA9”; for(无符号i=0;iintmain() { std::string str=“\xAA\xA3\xAA\xA1\xA3\xA7\xA9\xA7\xA4\xA9”; for(无符号i=0;icout您的数字似乎偏移了0xA0,数字“0”表示为10而不是0(0xA0+10=0xAA)

因此,对于每个数字,减去0xA0,然后取模10:

const unsigned int digit = (weirdHexValue - 0xA0) % 10;
借用@hidayat的一些代码,下面是一个如何转换的示例:

int main()
{
    std::string str = "\xAA\xA3\xAA\xA1\xA3\xA7\xA9\xA7\xA4\xA9";

    std::for_each(str.begin(), str.end(), [](char &c)
    {
        c = '0' + (c - 0xA0) % 10;
    });

    cout << str << endl;

    return 0;
}
intmain()
{
std::string str=“\xAA\xA3\xAA\xA1\xA3\xA7\xA9\xA7\xA4\xA9”;
std::for_each(str.begin()、str.end()、[](char&c)
{
c='0'+(c-0xA0)%10;
});

cout您的数字似乎偏移了0xA0,数字“0”表示为10而不是0(0xA0+10=0xAA)

因此,对于每个数字,减去0xA0,然后取模10:

const unsigned int digit = (weirdHexValue - 0xA0) % 10;
借用@hidayat的一些代码,下面是一个如何转换的示例:

int main()
{
    std::string str = "\xAA\xA3\xAA\xA1\xA3\xA7\xA9\xA7\xA4\xA9";

    std::for_each(str.begin(), str.end(), [](char &c)
    {
        c = '0' + (c - 0xA0) % 10;
    });

    cout << str << endl;

    return 0;
}
intmain()
{
std::string str=“\xAA\xA3\xAA\xA1\xA3\xA7\xA9\xA7\xA4\xA9”;
std::for_each(str.begin()、str.end()、[](char&c)
{
c='0'+(c-0xA0)%10;
});

AA(16)=A(16)*16(10)+A(16)=10(10)*16(10)+10(10)=170(10)等等。数字是否保存在内存中?如果是,如何保存?是字符数组/指针?还是保存在文件中?还是应该在提示中输入数字?AA(16)=A(16)*16(10)+A(16)=10(10)*16(10)+10(10)=170(10)以此类推。数字是否保存在内存中?如果是,如何保存?它是字符数组/指针?还是保存在文件中?还是应该在提示符中输入数字?这正是我要找的。这正是我要找的