アプリ版:「スタンプのみでお礼する」機能のリリースについて

10進数をIEEE754(HEXコード)に変換する簡単な計算式を教えて下さい
100->42C80000 、0.5->3F000000 等に変換したいのですが、よく分かりません
よろしくお願い致します

A 回答 (1件)

環境が不明ですが、.NETである場合は自力で計算するよりもBitConverterでSingle型をバイト配列化してしまうのがよいかと。


.NET(VB,C#)の単精度浮動小数点数はIEEE754だったと思うので・・・。

Imports System.Runtime.InteropServices
Imports System.IO

Class Sample
Public Shared Function SingleToHex(ByVal Value As Single) As String
Dim bytValue As Byte() = BitConverter.GetBytes(Value)
Dim strHex As String = ""

' リトルエンディアンならバイト配列を逆転させる
If BitConverter.IsLittleEndian Then Array.Reverse(bytValue)

' バイト配列を文字列化
For Each b As Byte In bytValue : strHex += b.ToString("X2") : Next
Return strHex
End Function
End Class

呼び出し例と出力結果です。
Console.WriteLine(Sample.SingleToHex(100.0F)) ' 42C80000
Console.WriteLine(Sample.SingleToHex(0.5F)) ' 3F000000


VB6.0やVBAにはBitConverterがないので、WinAPIのCopyMemoryで変数をバイト配列化することができます。こちらのコードは割愛。必要なら補足出してください。
    • good
    • 0
この回答へのお礼

ちょっとした処理にはExcelが楽でしたので、Excel_VBAでプログラムしていました、変換はできましたが(あまり美しくないので・・・)
こちらに投稿しました
上記を参考に.NETに変更します
*VBAでもチェックしようと思います
どうもスッキリしなかったのですが、これで楽になりました
ありがとうございました

お礼日時:2009/11/12 10:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています