• ベストアンサー

10進数の実数値の値を32ビットで表す16進法に変換したいのですが

10進数の実数値の値を32ビットで表す16進法に変換したいのですが 方法がわかりません。 例えば10進(1.23)を16進(70A43F9D)に変換したいのです。 ご存知の方がいらっしゃいましたら宜しくお願いいたします。 環境は、VB2005です。

  • OVERQ
  • お礼率84% (87/103)

質問者が選んだベストアンサー

  • ベストアンサー
  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.1

2005という事は.NETですね。 C#ですが、参考URLを参考にされてはどうでしょう。 但し、実数型は通常64bit(double)です。 32bitで表記するのが目的の場合、一旦single型にする必要があります。

参考URL:
http://social.msdn.microsoft.com/Forums/ja-JP/csharpgeneralja/thread/d99df996-5e63-4c21-b369-8e062af1e0d7
OVERQ
質問者

お礼

有難う御座います。 教えて頂いたURLを参考に下記コードでうまく16進に変換できました! ここまで出来ればあとはなんとかなります。D-Matsuさんアドバイス感謝です。 Dim x As Single = 1.23 Dim barr() As Byte barr = System.BitConverter.GetBytes(x)

関連するQ&A

  • 2進数データのビット演算

    vb.netにて 0と1からなる2進数で記録した2つの値をビット演算したいと思っております。 Convert.ToInt32("1111101000", 2) などを使って、一度数値に変換して演算すれば、計算可能なことはわかったのですが、計算に利用したいデータが2進数で1000桁ほどあります。桁数が多い場合、Convert.ToInt32ではエラーが出て実行できません。 無数に長い2進数のデータをビット演算するにはどうすればよろしいでしょうか。 ご存知の方、ご教授よろしくお願いいたします。

  • 数値のパック10進数の変換について(vb6)

    こんにちは 現在、vb6で開発を行っております。 早速ですが、困っていることがあります。 データベースを読み込んで、その値をテキストファイルに出力しているのですが、ある項目(数値)だけパック10進数に変換して出力しなければなりません。 いろいろなサイトを調べた結果、 例:数値で432 は "0100001100101100" のように変換できることがわかりました。しかし、この時点ではただの文字列のためこの値をテキストファイルに出力しても意味がありません。パック10進数のコード(?)としてテキストファイルに出力するにはこの後、どのようにすればいいのでしょうか。 ご存じの方がいらっしゃれば、ご教授願えないでしょうか?

  • 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関数をご教示ください 宜しくお願いいたします

  • n進数の値を10進数の値に変換するには?

    こんにちは。 C言語において、n進数の値を10進数の値に変換する方法を考えています。 例えば、2進数の101を、10進数で表すと5になります。 これを関数化し、 n_to_m(int x, unsigned n); といったプロトタイプで、 渡された整数x(n進数)を、10進数での値に変換する関数を作りたいのです。 逆に、10進数の値を、n進数の値に変換する関数も一緒に作りたいと考えています。 何かいい方法を思いついた方がいらっしゃれば、是非アドバイスを頂きたいと思います。 では、よろしくお願い致します。

  • 12進法と60進法の数値は

    アナログ時計だと12進法で ↓  ↓  ↓です。 1 2 3 4 5 6 7 8 9 10 11 12 Q1:進法の考え方からすると 10~12は1ケタで表現すべきではないですか?   16進法だと    0 1 2 3 4 5 6 7 8 9 A B C D E F   と1ケタで表現出来てます。 Q2:宇宙人(3000年前かなぁ!)が使用していた60進数は1ケタで60種類の数値を表現していたん    ですか?    数値の種類もわかりますか?

  • 16進数の文字列を10進数の数値に変換する方法

    以下のように1バイト単位で区切られた16進数の文字列があったとします。 01 23 45 67 78 9A BC DE F0 これを10進数の数値に変換したいのですが、atoi()関数では無理のようです。 良い方法がありましたら教えていただけないでしょうか。 どうぞよろしくお願い致します。m(_ _)m

  • 16進数を10進数に変換について

    16進数を10進数に変換について 今、情報処理の勉強をしていますが、 16進数を10進数への変換にてつまずいています。。。 以下、ご存じの方 お教えください。 16進数:ABCDを10進数に変換する方法が全くわかりません。 参考書をみても 理解ができない方法でした。 参考書の記載は以下でした。 ---------------------------------------------------    重| 16^3   16^2  16^1  16^0    み| 2^12    2^8   2^4   2^0      | 4096   256    16     1  --------------------------------------------------- 16進数|  A      B     C      D   10*4096+11*256+12*16+13  =40690+2560+256+160+32+13  =43520+416  =43981 なぜ、16進数のAが2^12なのでしょうか? 分かりにくくすみません。。。 ご教授頂きたくよろしくお願いいたします。

  • このシンプルな進数の変換はどういう流れで行っているのでしょう?

    このシンプルな進数の変換はどういう流れで行っているのでしょう? (1)06201E90h この16進数の数値が (2)2104976d こうなって、 (3)76491002 こうなることについて、 「PackedBCDに変換して下位から並べる」という説明を受けたんですが、 そのとき上記の数値と説明だけメモして納得したつもりが、後で実際に変換しようとすると訳が分からなくなりました。(2)から(3)へは、並んでいるのを2文字ずつとって逆にしていると分かったのですが、(1)から(2)が・・・。 (2)の末尾にdが付いてるので10進数に変換していると思うのですが、普通に変換したらEが14という2桁の数値になって意味不明になります。 また、PackedBCDは4ビットで1桁の10進数を表すとありましたが、 上記の式をそれに当てはめてどうしようというのでしょうか。(もしかしたら聞き間違えた可能性もあるので、似たような用語がないか調べているところです。) どなたかご教示くださいますでしょうか。

  • 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を見ると 倍数になっているのですが、、 これはいったいどういう違いなんでしょうか? 回答お願いいたします。 ほかにも解らなそうな点は、教えて頂けると幸いです。

  • 数値の値を時刻に変換する方法について

    お世話になります。 現在VB2008にてフォームの開発をしているのですが、 DataGridViewのCellに手入力で数値の値を入力し、 その数値を時刻のHH:mmの書式に変換する仕様を 作成したいのですが、その関数が解らないんです。 具体的な目的としては、 例として 854 → 8:54 2005 → 20:05 と表示されるようにしたいのです。 一応、Format関数や、CDateなどを試してはみたのですが、 目的どおりの動作は行われませんでした。 どなたか、上記の動作を実現する関数などを ご存知の方いらっしゃましたらご教授いただけないでしょうか。 お手数ですが、よろしくお願いします。

専門家に質問してみよう