- ベストアンサー
4バイトより大きな値の2進数への変換方法
コマンドライン引数で4バイトで収まらない値(0x100000000以上)を受け取り、 2進数へ変換し出力したい場合はどのようにすればよいでしょうか? ※longlongのような64bit型を使わないことが前提として・・・ よろしくお願いします。
- C・C++・C#
- 回答数2
- ありがとう数1
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
例えば8バイトの整数値であれば 4バイト×2、あるいは1バイト×8と考えて それぞれ2進数に変換します。 それを"0"埋めして桁を揃えて、連結して表示すれば良いだけです。 8バイトの符号無整数値:0xFFFFFFFF00001111なら 0xFFFFFFFF→11111111111111111111111111111111(2進数) 0x00001111→00000000000000000001000100010001(2進数) を連結して 1111111111111111111111111111111100000000000000000001000100010001 となります。
その他の回答 (1)
- wormhole
- ベストアンサー率28% (1622/5658)
コマンドライン引数で受け取るのが16進数を表す文字列と 限定してよいのであれば先頭から1文字づつ '0'→"0000" '1'→"0001" '2'→"0010" '3'→"0011" ~ 'F'→"1111" として出力。
関連するQ&A
- 10進数→2進数の出力について
コマンドライン引数から10進数の値を入力して 2進数に変換して出力しようとしています。 ※入力される10進数の値はかなり大きなものを想定しています。 現在は下記のようなコードで変換しようとしていますが失敗しています。 動作環境は『WindowsXP、Activeperl-5.12.4.1205』です。 拙い説明ですが、よろしくお願いいたします。 # コマンドライン引数は「9223372036854775808」 $n = unpack("B8", pack("C", $ARGV[0])); print n; # 実行結果は「11111111」 # 期待している出力結果は「1000・・・000」(←0が64個) 9223372036854775808
- ベストアンサー
- Perl
- 8桁の2進数を10進数に変換する方法を教えてください。
キーボードから2進数を入力した値を10進数に変換し、変換結果を出力する方法が解りません。作成するにあたり仕様があり、私一人では解決できないので相談させていただきました。 <仕様は以下の通りです> (1)このプログラム(8桁の2進数を10進数に変換)をする際は、最後に出力する時(printf)以外は関数を使ってはいけません。 (2)キーボードから2進数を入力させる。 (3)空白(ブランク)が入力されても変換可能にする。 (4)入力された2進数は8桁にし、8桁以上の場合はエラーを出す。 (5)2進数の「0」と「1」以外の文字が入力された場合はエラーを出す。 (6)バイナリ変換をし、変換結果を出力する。 以上になります。 まだ、C言語を勉強を習い始めの初心者です。どうか、ご回答のほど宜しくお願いします。
- 締切済み
- C・C++・C#
- javaで16進数のバイナリデータ4バイトを10進数に変換する方法
今私が行なおうとしていることは、char型とbin型が混ざり合ったファイル(1レコード301バイト)から固定バイト部分(bin型の部分4バイト分)を切り取り、 テキストファイルで読み取れる数値(int、又はbouble)に変換・出力するという作業です。 FileInputStreamとDataInputStream.read()を使用し、全データをbyte[]で取得、対象固定バイト部分のbyte[]取得までは出来ました。 取得したbyte[]の値を見ると、16進数表記になっていました。ここで、1バイト分(byte[1])をintValueでintに変換する事はできましたが、 4バイト分(byte[4])の値を一気に10進数表記にしてint型で出力する方法がわかりません。 誰かわかる方はいらっしゃいますか?そもそもできないのでしょうか? またはもっと良い方法があれば教えていただきたいです。 補足としてですが、BufferedReaderでファイルを読込まなかったのは、bin型データ部分がたまたま改行コードになってしまうことがあり、readLine()で1行データ(301バイト分)を取得できないからです。 こちらの方法でも読込み・変換できるのでしょうか? 誰かわかる方がいらっしゃったらぜひ教えて下さい!
- ベストアンサー
- Java
- 10進数(+-)→2進数への変換(2)
先ほど、ご質問させて頂きました者です、詳細にご説明させて頂きます (1)10進数:-16072 → 2進数:1100 0001 0011 1000 補足:2進数の16bit目の「1」は符号ビット「ー」 (2)10進数:+16072 → 2進数:0011 1110 1100 1000 補足:2進数の16bit目の「0」は符号ビット「+」 補足:10進数の値の範囲は 2進数で 符号1bitを含む16bitの値の範囲です と変換できるVB関数をご教示ください 宜しくお願いいたします
- ベストアンサー
- Visual Basic
- 10進数の実数値の値を32ビットで表す16進法に変換したいのですが
10進数の実数値の値を32ビットで表す16進法に変換したいのですが 方法がわかりません。 例えば10進(1.23)を16進(70A43F9D)に変換したいのです。 ご存知の方がいらっしゃいましたら宜しくお願いいたします。 環境は、VB2005です。
- ベストアンサー
- Visual Basic
- 2進数&10進数&16進数の変換
◆ コンピュータで使用される2進数 人が日常使用している数値は10進数ですが、コンピュータは内部で数値を表現する場合、2進数を使用 しています。しかし、「0」と「1」だけの2進数では人が分かりにくいため、人間が見えるところでは コンピュータは2進数を10進数や16進数が変換して表現しています。ここではその変換方法を学びます。 ◆ 2進数 2進数とは、「0」と「1」の2種類の数字を用いて全ての数を表現します。10進数では0から数えて「9」の 次は位があがることになりますが、2進数では「 1 」の次に位があります。位があがれば、その新しい桁は 「 1 」 となり、それ以下の桁は全て 「 0 」 となります。それでは、2進数の数の増え方を見てみましょう。 ところで、2進数を表現する時は一般的に8桁単位で表現するため、8桁未満の場合は頭に0をつけます。 つまり、上の2進数の値は順番に 00000000 → 00000001 → 00000010 → 00000011 → 00000100 → 00000101 → 00000110 → 00000111 → 00001000 と表します。以下は2進数と10進数の対応表です。 2進数と10進数の対応表 10進数 0 1 2 3 4 5 6 7 8 9 10 ・・・ 2進数 0 1 10 11 100 101 110 111 1000 1001 1010 ・・・ ◆ 2進数から10進数への変換方法 10進数と2進数の対応表は以下の通りです。2進数の桁が上がる時の10進数の値が以下となります。 2進数と10進数の対応表2 10進数 1 2 4 8 16 32 64 128 2進数 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000 従って、2進数で「1」となっている桁に対応する上記の10進数の基準値を合計することにより、2進数から 10進数の値を求めることができます。例えば、2進数の「 00101010 」を10進数に変換する場合、基準値が 32、8、2の所でビットが1なので下図の通り、2進数の「 00101010 」は10進数では「42」だと分かります。 ◆ 10進数から2進数への変換方法 10進数の数値を「 0 」になるまで「 2 」で割り算していき、その結果の「余りの数 」を並べることで ある10進数の値を2進数の値へ変換することができます。それでは、具体的に変換して見て行きましょう。 例えば、10進数の「160」を2で割り算していくと上図の結果となります。後は、余りの数を下から順番に 並べれば 「 10100000 」 の値が算出されます。次に、「22」を2で割り算していき余りの数を下から順に 並べれば 「 10110 」 の値が算出されます。ネットワークにおいては、2進数を一般的に8桁で表示する ことから、8桁になるよう上位に「 0 」を追加して「 00010110 」とします。当然「 10110 」と同じ値。 因みにここ参照ですがhttp://www.infraexpert.com/study/ip1.html なぜこれが10進数なんでょうか? 10進数というのは、0から9までの数字が1増えて10になるんですよね? なのに2進数と10進数の対応表2を見ると 倍数になっているのですが、、 これはいったいどういう違いなんでしょうか? 回答お願いいたします。 ほかにも解らなそうな点は、教えて頂けると幸いです。
- ベストアンサー
- その他([技術者向] コンピューター)
- 実行ファイルに値を渡す方法
実行ファイル(EXE)に実行時にパラメータとして値を渡したいのですが、方法がわかりません。 コマンドライン引数を使用するのでしょうか?
- ベストアンサー
- Visual Basic