How can I convert a hexadecimal string from two's complement to a signed int?

Hello,
In a CCS code that i have produced, my data comes in two's complement, wich is stored as a hexadecimal number.
Than i send it to matlab by serial port, and it's read as a string (example: 'FFDF').
I know that FFDF is equal to -33, but how do i make that convertion in matlab?
Thank you,
Josué Jones

1 个评论

In opposite to some other binary/hex conversion questions in this forum, you provided an example value, which unequivocally defines, what you want. Therefore I've voted this question - and it is my personal question of the week!

请先登录,再进行评论。

回答(2 个)

Similar to Walter's method, but the builtin function hex2dec is slow, while sscanf converts hexadecimal values very fast:
typecast(uint16(sscanf('FFDF', '%x')), 'int16')

3 个评论

This was tremendously useful for converting my fixed-point coefficients from fixed-point matlab objects to standard integers. Exactly what I needed. Thanks so much!
Is there a possibility of using the same on a complete column of 16bit Hex values in a table ?? DataType being 'cell array of character vectors'
typecast(uint16(cellfun(@(S) sscanf(S, '%x'), YourCell)), 'int16')

请先登录,再进行评论。

类别

在 帮助中心 和 File Exchange 中查找有关 Numeric Types 的更多信息

提问:

2012-8-18

评论:

2022-5-30

Community Treasure Hunt

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

Start Hunting!

Translated by