有没有人知道一种有效的方法,以便在16位数的8个最低有效位(LSB)中插入某些字符的ASCII值?
我想到的唯一想法是将两个数字转换为二进制,然后将16位数字中的最后8个字符替换为8位的ASCII值。但据我所知,字符串操作在计算时间上非常昂贵。
由于
答案 0 :(得分:2)
我不知道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);
&
运算符是算术“和”运算符。 |
运算符是算术“或”运算符。以0x
开头的数字为十六进制,以便于阅读。
答案 1 :(得分:1)
这是@ user1118321想法的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))