如何在matlab中将16位无符号整数数组转换为ascii字符串

时间:2013-12-26 04:18:36

标签: matlab ascii

我正在寻找一种将16位无符号整数数组转换为ASCII字符数组的方法。我正在使用char来进行转换

D=[65 65 65 65];
char(D)

将显示4'A'。但是,由于D中的每个数字都是16位,我希望它将每个数字转换为2个字符。例如,如果我有

D=[16707]
char(D)

我希望它能给我两个字母'A'和'C'。但是char总是返回1个字符。无论如何强制char转换像我说的方式?感谢。

3 个答案:

答案 0 :(得分:1)

为此,您需要编写自己的函数。

您可以使用char()分别转换最重要的字节和最低有效字节。

k      = 16707;
first  = char(bitand(bitshift(k, -8), 255));
second = char(bitand(k, 255));

答案 1 :(得分:0)

看一看 http://www.mathworks.com/help/matlab/ref/char.html

它巧妙地说明char函数仅对8位数有效。你可以用这个转换数组的每个单元格,并联系每两个单元格的结果。

答案 2 :(得分:0)

使用typecast将每个uint16转换为两个uint8,然后应用char。确保typecastr的输入确实属于uint16类型。

如果您需要撤消字符顺序,请在uint16向量上使用swapbytes

>> D = [16707 16708];

>> char(typecast(uint16(D),'uint8'))
ans =
CADA

>> char(typecast(swapbytes(uint16(D)),'uint8'))
ans =
ACAD