Floating point to 16 bit hexadecimal

31 ビュー (過去 30 日間)
Tousif Ahmed
Tousif Ahmed 2018 年 4 月 23 日
コメント済み: Tousif Ahmed 2018 年 4 月 24 日
Hello all, how can i convert floating point decimal to 16 bit hexadecimal value?
Thank you
  2 件のコメント
Guillaume
Guillaume 2018 年 4 月 24 日
Specifying the encoding used would be helpful. Is it IEEE 754 half precision you're after?
Tousif Ahmed
Tousif Ahmed 2018 年 4 月 24 日
yes IEEE 754 half precision

サインインしてコメントする。

採用された回答

Ameer Hamza
Ameer Hamza 2018 年 4 月 24 日
編集済み: Ameer Hamza 2018 年 4 月 24 日
You can use this file exchange submission. It will convert your number to 16-bit half precision format. But instead of returning as a string, it will return the equivalent uint16 MATLAB object. To get binary string, you can do this,
halfPrecisionNumber = halfprecision(1.2); % halfprecision() is provided in the file exchange package.
halfPrecisionString = dec2bin(halfPrecisionNumber, 16);
In case you face the following error on running the package
"Floating point bit pattern is not IEEE 754"
you can try following
  • Open halfprecision.c file.
  • Add following to include section
#include <stdint.h>
  • Replace 4 #define with the following macros
#define INT16_TYPE int16_t
#define UINT16_TYPE uint16_t
#define INT32_TYPE int32_t
#define UINT32_TYPE uint32_t
  • Run mex halfprecision.c.
  5 件のコメント
Guillaume
Guillaume 2018 年 4 月 24 日
編集済み: Guillaume 2018 年 4 月 24 日

Use dec2hex instead of dec2bin in Ameer's answer. Do not use num2hex which is not all suited for what you want.

halfPrecisionNumber = halfprecision(1.2);  % halfprecision() is provided in the file exchange package.
halfPrecisionHex = dec2hex(halfPrecisionNumber, 4);
Tousif Ahmed
Tousif Ahmed 2018 年 4 月 24 日
cool that works perfectly. Thanks to Mr. Guillaume and Mr. Ameer Hamza

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeParticle & Nuclear Physics についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by