0

このコードは、バイト数が1に等しい場合にのみ機能します。ユーザーがコマンドラインから挿入したものを出力したいのですが、バイト数は後で変更できます

#include <iostream>
#include <string>
#include <stdlib.h>

using namespace std;

void writeToScreen(char *data);
const int NOBYTES = 2;
int main(int argc, char *argv[]){
    // Example input is: FFA6 (2 Bytes)
    writeToScreen(argv[1]);
    system("pause");
    return 0;
}

void writeToScreen(char *data){
    for(int j=0;j<NOBYTES;j++){
    unsigned char dat = strtol(data+NOBYTES-j-1, NULL, 16);
    for (unsigned int i=0;i<8;i++)
    {
        if (dat & 1) 
            cout<<"1";
        else
            cout<<"0";
        dat>>=1;
    }
    cout<<endl;
    }
}

/*
    Can i get the out put to be (FFA6):
    11111111
    10100110
*/
4

3 に答える 3

0

正確に何をしようとしているのかわかりませんが、文字 (または一連の文字) のバイナリ値を出力したい場合は、これを試すことができます:

void to_binary(const char *const p, std::size_t bytes)
{
    for (std::size_t byte = 0; byte < bytes; ++byte)
    {
        std::cout << "byte" << byte << ": " ;

        for (std::uint8_t bit = 1; bit; bit <<= 1)
        {
            std::cout << ((p[byte] & bit) ? 1 : 0);
        }

        std::cout << '\n';
    }
}

ここでは、ライブの例を示します。

追加のアドバイスwriteToScreenは、ポインターを const として使用する必要があります。これは、渡された値のみを読み取るという意図を示しています。

于 2013-10-09T14:28:39.803 に答える