0

有谁知道将某些字符的 ASCII 值插入 16 位数字的 8 个最低有效位 (LSB) 的有效方法?

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

谢谢

4

2 回答 2

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便于阅读。

于 2013-05-03T04:52:06.447 回答
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))
于 2013-05-03T05:31:58.583 回答