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);

&演算子は算術「and」演算子です。|演算子は算術「or」演算子です。で始まる数字0xは、読みやすいように 16 進数です。

于 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 に答える