- ベストアンサー
数値を浮動小数点32bitHEXコードに変換
10進数をIEEE754(HEXコード)に変換する簡単な計算式を教えて下さい 100->42C80000 、0.5->3F000000 等に変換したいのですが、よく分かりません よろしくお願い致します
- みんなの回答 (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で変数をバイト配列化することができます。こちらのコードは割愛。必要なら補足出してください。
お礼
ちょっとした処理にはExcelが楽でしたので、Excel_VBAでプログラムしていました、変換はできましたが(あまり美しくないので・・・) こちらに投稿しました 上記を参考に.NETに変更します *VBAでもチェックしようと思います どうもスッキリしなかったのですが、これで楽になりました ありがとうございました