専門TwitterFacebook0はてブ0Pocket12019.11.06父親が浮動小数点数を16進数に変換する方法を尋ねてきたので、色々調べてみました。最終的にC言語とPythonで実装したので、備忘録としてまとめていきます。父は以下のサイトで浮動小数点数を入力し、Hexadecimalの結果をExcelシートに貼り付ける操作を繰り返したそうです。コンバーターAndroidアプリの開発、Tips、ニュース、アプリレビュー等を発信していますlogroid.blogspot.comしかし、膨大なデータとなると単純作業が多くなり効率が悪いです。そこで要望の通り、まずはExcelのマクロでコンバーターを作成できないか調べてみました。筆者のググり力では見つかりません。これでは実装できないので、他の言語でEXEファイルを作成し、マクロで標準出力を受け取る方向性で進めていくことにします。浮動小数点数の内部表現IEEE754規格に準じているとか。[hex]という指標が立ちました。Pythonでの16進法表現structライブラリを利用すれば簡単に実装できます。f)上のコードで浮動小数点数をバイト列に変換できました。ちなみに2行目の">f"はfloat型(ビックエンディアン)の指定です。次にこのバイト列をint型として再変換します。b)[0]">I"という記述からも察することはできますが、上のコードで再変換できます。戻り値はタプルとなるので[0]を忘れないように。最後に16進数への変換です。hex()関数を利用しましょう。hex(i)以上をまとめたのが以下のコードになります。print()先程の記述に加えて、第2引数が存在しない場合のValueErrorと数値でない場合のIndexErrorを拾ってエラー処理をしています。C言語での16進法表現Pythonと同じイメージで作成しようとしたらドツボにハマりました。共用体(union)を使えば上手くいくようです。共用体はデータをメモリ上で同一の場所に保管するので、メモリ上のバイト列を介して変換を行います。(過程は上の方針とほぼ同じ)これを基に作成したのが以下のコードです。0;}こちらも簡単なエラー処理は加えました。(穴はたくさんありそう。)Excel上でマクロ作成VBA上での外部コマンド実行及び標準出力の取得は以下のサイトを参考に作成しました。Tips[MS-DOSコマンドの標準出力を取得する]officetanaka.netコードは以下の通りです。Sub上のマクロでは選択セルの数値をC言語で作成したコンバーターを介して16進法表記に変換します。実行するファイルのパスに依存しないようにこのマクロを含むブックからの相対パスでEXEファイルを指定しています。公開コード及びブックはGitHubで公開しています。GitHub.github.com方法がすぐに見つからなかったため、EXEファイルも梱包してありますが、あまりよろしくないと思うのでReleaseの方法が分かり次第変更する予定です。360というライブラリが存在する。スライドを載せたVC強制切断Bot制作の続きです。言語はPythonを採用し、APIラッパーライブラリdiscord.pyを利用して作成することにしました。最低限の機能を実装したものの、時刻指定はXX:XXに限られ...2021.05.1288IO専門88IO専門ProcessingでPONGゲーム!!学校でプログラミングの課題が出ました。ProcessingによるPONGゲームの作成です。Lenovo公式からクーポンありで13,000円ほど。コメントをキャンセルメールアドレスが公開されることはありません。※サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。defined.")}))}();タイトルとURLをコピーしました。