How to convert char to uint8 and vice versa without changing the underlying data

197 次查看(过去 30 天)

.

回答(2 个)

James Tursa
James Tursa 2020-2-4
编辑:James Tursa 2020-2-4
Simply:
c = original char array
u = uint8(c);
Or
u = original uint8 array
c = char(u);
If you mean you want to reinterpret one as the other without a data copy, you can't because MATLAB stores char data as 2-bytes per char and uint8 is of course 1 byte per element.
If you want to reinterpret the char as uint16 or vice-versa without a data copy, it can be done but not officially. You have to resort to mex hacks. E.g.,

Walter Roberson
Walter Roberson 2020-2-4
I speculate that what you need is https://www.mathworks.com/help/matlab/ref/unicode2native.html unicode2native() to convert characters to bytes, and native2unicode() to convert bytes to unicode. The functions offer a variety of ways of encoding character positions greater than 255, including UTF8 and UTF16LE and UTF16BE .

类别

Help CenterFile Exchange 中查找有关 Data Type Conversion 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by