Floating point to 16 bit hexadecimal
조회 수: 24 (최근 30일)
이전 댓글 표시
Hello all, how can i convert floating point decimal to 16 bit hexadecimal value?
Thank you
댓글 수: 2
Guillaume
2018년 4월 24일
Specifying the encoding used would be helpful. Is it IEEE 754 half precision you're after?
채택된 답변
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
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);
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Particle & Nuclear Physics에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!