Cの2進数から12進数および16進数

勝利

16進数で数値を返す関数を作成したいと思います。しかし、10進数に変更した後、間違った数値が表示されます。出力では、最初の数値は2進数、2番目の数値も2進数ですが、int形式であり、3番目の数値は10進数である必要があります。しかし、10進数で間違った数値が表示されます(2行目を参照してください。220ではなく156である必要があります)。誰かが私が間違っていることを私に説明できますか、そしてどうすれば正しい数字を得ることができますか?ありがとうございました。これが私の出力です:

ここに画像の説明を入力してください

    char *encrypted = calloc((size_t)TEXT_LEN*3, sizeof(char));
int number[TEXT_LEN];
index=0;
for(int i=0;i<TEXT_LEN;i++){

    number[i]=atoi(binary[i]);

    printf("%s ",binary[i]);
    printf("%d ",number[i]);
    printf("%d\n",(unsigned char)number[i]);

    sprintf(encrypted+index,"%x ",(unsigned char)number[i]);

    index+=3;
}

printf("%s\n",encrypted);
free(encrypted);

編集:コメントで解決策を見つけ、次の行で関数strtolを使用して修正しました:

number [i] = strtol(binary [i]、NULL、2);

ヴェルナー

数値が16より小さい場合、書き込まれる文字列の長さは2であり、最後に文字「\ 0」が挿入されます。固定サイズのいずれかを使用してください

sprintf(encrypted+index,"%02x ", number[i]);
index += 3;

または、書き込まれた文字列の長さであるsprintf関数からの戻り値を使用して、インデックスをインクリメントします

index += sprintf(encrypted+index,"%x ", number[i]);

私は両方の組み合わせを好む

index += sprintf(encrypted+index,"%02x ", number[i]);

2進数の8文字の文字列に基づいて、上記のuser3121023の方法では、正しい10進数が得られます。

number[i] = strtol(binary[i], NULL, 2);
printf("%s ", binary[i]); // 1st col
printf("%d\n", number[i]); // 2nd col

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

2進数から16進数および16進数から2進数

分類Dev

16進数から10進数に、および10進数から2進数に変換する方法

分類Dev

シェルスクリプトの2進数から16進数および10進数

分類Dev

ObjectiveCで16進数から2進数

分類Dev

Nodejsで16進数から2進数

分類Dev

nodejsでの16進数から文字列および文字列から16進数への変換

分類Dev

BCDから10進数および10進数からBCD

分類Dev

Excelの12桁の数値の8進数から2進数

分類Dev

C#の10進数からC ++のfloatおよびjavascript番号

分類Dev

16進数、2進数、8進数からのファイルの変換

分類Dev

2進数から16進数への変換

分類Dev

2進数から16進数へのコンバーター

分類Dev

Cの16進数

分類Dev

文字列16進数からブール値および文字列16進数から文字列ASCII変換

分類Dev

10進数から16進数への変換c ++

分類Dev

10進数から16進数-Java

分類Dev

Bashで16進数から10進数

分類Dev

16進数から10進数$((0039))

分類Dev

10進数から2進数、および連続する1のカウント

分類Dev

Java-ビット演算子を使用した10進数から2進数(およびその逆)

分類Dev

Pythonは整数を16進数および2進数と比較します

分類Dev

16進数を2進数から16進数に変換しますか?

分類Dev

Javaでの16進文字列から2進数へ

分類Dev

Cでの10進数から2進数への変換

分類Dev

C ++での2進数から10進数への変換

分類Dev

10進数からcの2進数への障害

分類Dev

負の10進数から2進数のcコード

分類Dev

2進数から10進数へのc

分類Dev

10進数から2進数への変換C ++

Related 関連記事

ホットタグ

アーカイブ