一部の文字の 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);
&
演算子は算術「and」演算子です。|
演算子は算術「or」演算子です。で始まる数字0x
は、読みやすいように 16 進数です。
@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))