有谁知道将某些字符的 ASCII 值插入 16 位数字的 8 个最低有效位 (LSB) 的有效方法?
我想到的唯一想法是将两个数字都转换为二进制,然后将 16 位数字中的最后 8 个字符替换为 8 位的 ASCII 值。但据我所知,字符串操作在计算时间上非常昂贵。
谢谢
我不知道 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
便于阅读。
这是@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))