• 締切済み

DOUBLE型の16進HEX文字列変換について

12バイトのHEX文字列(FFFFFFFFFFFFFFFFFFFFFFFF)などを をいったん、10進に変換し、DOUBLE型の変数に設定し、 数値演算を行い 再度HEX文字列(FFFFFFFFFFFFFFFFFFFFFFFF)に変換を行いたいのですが、 変換の方法がわからず困っています。 HEX関数はLONGでしかおこなえないようで・・ すみませんが、ご教授いただけると助かります。 宜しくお願いいたします。

みんなの回答

  • wormhole
  • ベストアンサー率28% (1621/5656)
回答No.4

変換規則さえ書かれていないので回答不能です。

回答No.3

 DOUBLE FLOATINGは16進数に変換しても意味ないですよ。  64ビットで暗号化されて(パック化?)入っていますので。  参照URLをご覧下さい。(英語で御免ね。IEEE{アイトリプルイー}754)

参考URL:
http://en.wikipedia.org/wiki/Double-precision_floating-point_format
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

double型でも12バイト(96ビット)の整数を完全に代入することはできないし、逆変換すると下位ビットが0になってしまうこともあると思うのですが、それはいいのでしょうか? http://msdn.microsoft.com/ja-jp/library/vstudio/x99xtshc.aspx によると、Double型は64ビットです。 そのうち、指数とか符号とかに一部が使われるので、整数型に換算すると 53bitしかありません。 http://ja.wikipedia.org/wiki/IEEE_754

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

16進数の原理はご存知ですよね? だったらできるんじゃないですか? Function 十進変換(ByVal ヘキサ As String) As Double Dim 位置 As Long Dim 符号 As Long Dim 数値 As Long Dim 結果 As Double '12文字限定 For 位置 = 1 To 12   '位置の示す文字を数値化する   数値 = Val("&H" & Mid(ヘキサ, 位置, 1))   '先頭の場合は符号を設定する   If 位置 = 1 Then     If 数値 > 7 Then 符号 = 15   End If   '結果に加算する   結果 = 結果 * 16 + (数値 Xor 符号) Next If 符号 Then 結果 = -結果 - 1 '結果を返す 十進変換 = 結果 End Function 16進への変換も同じです Function 十六進変換(ByVal 数値 As Double) As String Dim 位置 As Long Dim 符号 As Long Dim 繰越 As Long Dim 剰余 As Long Dim 結果 As String '数値がマイナスならば正にする If 数値 < 0 Then   数値 = -数値   符号 = 15   繰越 = 1 End If '12文字限定 For 位置 = 1 To 12   '16で割った剰余を求める   剰余 = 数値 - Fix(数値 / 16) * 16   '数値を更新する   数値 = Fix(数値 / 16)   '負の場合は反転して繰越を加算する   If 符号 Then     剰余 = (剰余 Xor 符号) + 繰越     '15を越えたら繰り越す     If 剰余 > 15 Then       剰余 = 0       繰越 = 1     Else       繰越 = 0     End If   End If   '文字化して前方に付け加える   結果 = Hex(剰余) & 結果 Next '結果を返す 十六進変換 = 結果 End Function

関連するQ&A

  • 文字列を文字コードの数値に変換する方法

    JISコードの日本語を含む文字列を、文字コードの数値に変換する方法がわからなくて困っています。とりあえずは文字列ではなく、1文字だけ変換することを目指してord関数を使ったんですが、1バイト文字はうまくいったのですが、2バイト文字だと思うような結果になりませんでした。 例)以下のように変換したいです。 「a」→「97」 「あ」→「9250」 どなたかいい方法や関数をご存じないでしょうか? ちなみに下記のように片っ端から試してみたのですが、思うような結果が得られませんでした。 $buf = mb_convert_encoding($_POST["string"], "JIS", "EUC-JP"); $jis_code1 = ord("$buf"); $jis_code2 = bin2hex("$buf"); $jis_code3 = urlencode("$buf"); $jis_code4 = intval("$buf");

    • 締切済み
    • PHP
  • カンマの含まれる文字列の数値変換方法について

    VB.NETでプログラミングしています。 String型の文字列を Double型の数値に変換するときに 一般的にはVal関数を使いますが、 カンマが含まれる文字列"111,111"を 数値変換したい場合には単純にVal関数を 使用しただけではうまくいかないようです。 上の例で数値変換すると"111"になってしまうようです。 そこで質問なのですが、 何か簡単にできるうまい方法はないでしょうか? 関数があればご教示ください。 以下、Val関数の説明の抜粋です。 解説 文字列中に数字以外の文字が見つかると、Val 関数は読み込みを中止します。円記号 (\) やカンマ (,) など、通常は数値の一部と見なされる記号や文字も、Val 関数は数値として解釈しません。

  • 数値を文字列に変換する方法

    int rssi_dec = Convert::ToInt32("0X" + test02, 16); -----------(中略)----------------------- 一度、文字列だったものを数値に変換して、中略部分で計算をして、もう一度数値をHEXの 文字列に変換して、 String^ test このtestの中に代入したいと思っているのですが、どのようにすればよいのでしょうか? どうぞ、ご教授よろしくお願い致します。

  • 数値を文字列に変換

    文字列を数値変換する関数はありますが、逆に数値を文字列に変換するにはどうやればよいのでしょうか?

  • STLのto_stringにlong double

    こんばんは。 STLにto_string関数を見つけました。 変数の型を見るとlong doubleもサポートしているようなので値を入れてみたところfloat値を文字列に変換したものしか得られませんでした。 どのようにすればlong doubleを文字列として取得できるのでしょうか? 環境はVisualStudio2013です。

  • 1Byte→Hex文字列変換がうまく行かない。

    PICマイコン用にCを勉強中です。 1Byte→Hex文字列変換関数を作ろうとしています。 メモリを出来るだけ使いたくないのでコンパイル後のメモリを極少なくするようにしたいと思い以下のようなコードを書きましたが、うまくいきません。 void ByteToHex(unsigned short b, char *p) {   unsigned short t;   t = b >> 4   *p = t + (t < 10 ? 0x30 : 0x41);   t = b & 0x0f;   *(p+1) = t + (t < 10 ? 0x30 : 0x41);   *(p+2) = 0; } (p+2):ポインタのアドレスは加減算できるんかな?? ちなみに使っているコンパイラは"mikroC"です。

  • double型を文字列で。

    doubleが文字列表現したいのですが、printfで"%f"をしていしても桁が足りません。 検索で調べても桁を指定しているものが多く、汎用的ではないように見えます。 変数にセットされたdouble値をそのまま文字列で表現する方法はないのでしょうか?

  • 文字列入力したものを数値に変換したい

    excel2007です。 数値を文字列で入力したものを 通常の数値に変換するには どうすれば宜しいのですか。 四則演算ができるようにしたいのですが。

  • 文字列が数値に変換されない

    文字列の数字をVALUE関数で数値に変換したくても数値になりません。 ♯N/Aと表示されるだけです。 関数を入れたあとに表示形式を数値にしても変わりません。 元の文字列はVLOOKUP関数で検索した数字です。 これができないと仕事が進みません。急いでます。お願いします。

  • 文字列から整数導き出したい

    お世話になります。 現在、簡易的な占いのプログラムを作ってみています。 フォームに入力された文字から占いの結果を表示するようなものを 作りたいのですが、中々うまくいきません。 仕組み的にはフォームから文字列をPOST⇒10進数の整数に変換⇒10進数の整数に対応する占い結果を表示という形を考えています。 文字列をbin2hex関数で16進数にはできるのですが、16進数から10進数変換する方法がわかりません。 何かより方法がありましたらご教授ください。

    • ベストアンサー
    • PHP

専門家に質問してみよう