Как я могу преобразовать двоичный код в Hex в C ++ - PullRequest
0 голосов
/ 08 апреля 2019

Я пытался конвертировать двоичные в шестнадцатеричные

Моя среда Xcode в Mac

Это мой код:

string bytes2hex(string str)
{
    stringstream ss;
    string sub = str.substr(6,1);           // output : \220

    const char *sub_cstr = sub.c_str();
    cout << *sub_cstr << endl;              // output : \220

    ss << hex << unsigned (*sub_cstr);      
    cout << "ss : " << ss.str() << endl;    

    return ss.str();
}

int main()
{
    bytes2hex(sha256("88"));                 // ss : ffffff90
}

Итак, чтобы найти ошибку, удалите 'hex'

ss << unsigned (*sub_cstr);                  // output : -112

Я использовал «unsigned», но получил отрицательное значение.

И я только что ожидал значение '144'

Как мне исправить этот код, чтобы получить правильное значение?

1 Ответ

0 голосов
/ 08 апреля 2019
try that and see if it's working.   let's say the binary is 1101, then it will be 44D.

#include<iostream.h>
    #include<conio.h>
    void main()
    {
        clrscr();
        long int binnum, rem, quot;
        int i=1, j, temp;
        char hexdecnum[100];
        cout<<"Enter Binary Number : ";
        cin>>binnum;
        quot = binnum;
        while(quot!=0)
        {
            temp = quot % 16;
            // To convert integer into character
            if( temp < 10)
            {
                temp = temp + 48;
            }
            else
            {
                temp = temp + 55;
            }
            hexdecnum[i++]= temp;
            quot = quot / 16;
        }
        cout<<"Equivalent hexadecimal value of "<<binnum<<" is :\n";
        for(j=i-1 ;j>0;j--)
        {
            cout<<hexdecnum[j];
        }
        getch();
    }
...