Matlab 在LSB中插入ASCII码

Matlab 在LSB中插入ASCII码,matlab,binary,ascii,Matlab,Binary,Ascii,有人知道在16位数字的8个最低有效位(LSB)中插入某些字符的ASCII值的有效方法吗 我想到的唯一想法是将两个数字转换成二进制,然后用8位的ASCII值替换16位数字的最后8个字符。但据我所知,字符串运算在计算时间上非常昂贵 谢谢我不知道Matlab语法,但在C语言中,它是这样的: short x; // a 16-bit integer in many implementations ... do whatever you need to to x ... char a = 'a'; //

有人知道在16位数字的8个最低有效位(LSB)中插入某些字符的ASCII值的有效方法吗

我想到的唯一想法是将两个数字转换成二进制,然后用8位的ASCII值替换16位数字的最后8个字符。但据我所知,字符串运算在计算时间上非常昂贵


谢谢

我不知道Matlab语法,但在C语言中,它是这样的:

short x; // a 16-bit integer in many implementations
... do whatever you need to to x ...
char a = 'a'; // some character
x = (x & 0xFF00) | (short)(a & 0x00FF);

&
运算符是算术“and”运算符。
|
运算符是算术“或”运算符。以
0x
开头的数字是十六进制的,便于阅读。

我不知道Matlab语法,但在C中,它是这样的:

short x; // a 16-bit integer in many implementations
... do whatever you need to to x ...
char a = 'a'; // some character
x = (x & 0xFF00) | (short)(a & 0x00FF);

&
运算符是算术“and”运算符。
|
运算符是算术“或”运算符。以
0x
开头的数字为十六进制,便于阅读。

以下是@user1118321 idea的MATLAB实现:

%# 16-bit integer number
x = uint16(30000);

%# character
c = 'a';

%# replace lower 8-bit 
y = bitand(x,hex2dec('FF00'),class(x)) + cast(c-0,class(x))

以下是@user1118321 idea的MATLAB实现:

%# 16-bit integer number
x = uint16(30000);

%# character
c = 'a';

%# replace lower 8-bit 
y = bitand(x,hex2dec('FF00'),class(x)) + cast(c-0,class(x))

谢谢你的回答,但是我在使用比特和“太多输入参数”时遇到了错误,我检查了文档,一切似乎都很好。你有没有直接在matlab中试过你的代码?@JorgeZapata:你有什么matlab版本?最近版本中添加了
位和
assumedType
)的最后一个参数。。。我想这是可选的。只需将其称为:
bitand(x,hex2dec('FF00'))
使用位移位可以实现同样的效果事实上,这是假定的类型参数,我正在使用Matlab R2012a用于mac。省略假定类型解决了问题。谢谢=)谢谢你的回答,但是我在使用比特和“太多输入参数”时遇到了错误,我检查了文档,一切似乎都很好。你有没有直接在matlab中试过你的代码?@JorgeZapata:你有什么matlab版本?最近版本中添加了
位和
assumedType
)的最后一个参数。。。我想这是可选的。只需将其称为:
bitand(x,hex2dec('FF00'))
使用位移位可以实现同样的效果事实上,这是假定的类型参数,我正在使用Matlab R2012a用于mac。省略假定类型解决了问题。谢谢=)谢谢您的快速回答,我正试图在Amro的帮助下实现类似版本的代码。您的代码肯定会比我的问题中的方法运行得更快谢谢您的快速回答,我正试图在Amro的帮助下实现类似版本的代码。你的代码肯定会比我问题中的方法运行得更快