How to convert 0xffff to -1?
7 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Stephen Galperin
am 25 Jun. 2019
Kommentiert: Walter Roberson
am 26 Jun. 2019
I'm controlling a DAC with Matlab. I want to display the voltage that I'm setting the DAC to. The DAC voltage range is from -10 to 10v and the DAC treats the input value as a signed integer. If I cast 0xffff into int16 Matlab gives me maxint (32767) or if I cast into int32 I get 65535.
For example:
DACsetting = hex2dec('ffff')
%Display the setting
fprintf('%d\n', DACsetting * 10/(2^15 -1));
I can write buch of extra code to work around this, but this should be a very simple thing for a language to do.
DACsetting = hex2dec('ffff')
DACsetting =
65535
>> fprintf('%d\n', DACsetting * 10/(2^15-1))
2.000031e+01
fprintf('%d\n', int16(DACsetting) * 10/(2^15-1))
1
Thanks in advance.
0 Kommentare
Akzeptierte Antwort
Walter Roberson
am 25 Jun. 2019
typecast(uint16(hex2dec('ffff')), 'int16')
5 Kommentare
Walter Roberson
am 26 Jun. 2019
? You showed your input as character vector so that is what I programmed.
MATLAB has no direct 0xffff only '0xffff' or 'ffff' or binary values equivalent to 65535 integer, or double precision representation of 65535. What is your actual input?
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Data Type Conversion finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!