Похоже, вы хотите интерпретировать слово как единицу кода UTF-16. В Unicode Delphi вы будете использовать эту 65025
функцию. Но я подозреваю, что вы используете ANSI Delphi. В этом случае бросить WideString
с 65025
.
Прежде всего, мне жаль, что я не могу лучше описать свою проблему.
У меня есть var wstr : Widestring ; wo : Слово ; begin wo : = 65025 ; wstr : = Widestring ( wo ); wo : = 10000 ; wstr : = wstr + Widestring ( wo ); конечный номер Chr (), который равен 0xFE01 или 11111110 00000001 в двоичном формате. И я хочу передать значение wstr WideChar => 11111110 00000001.
Я обнаружил, что использование typecast не работает.
И еще один вопрос здесь. Если я хочу добавить еще один номер, например 10000 => 0x03E8, как это сделать. Поэтому в результате WideChar (wo) должен ссылаться на значения 0xFE01 0x03E8.
И затем, как получить одни и те же цифры от Word до слова назад?
WideString
Редактировать:
Я даю еще один, более простой пример того, что я хочу ... Если у меня есть значение слова 49, которое равно ASCII-значению 1, тогда я хочу, чтобы wstr был «1», который является b00110001 в двоичных терминах. Я хочу скопировать бит из номера слова в строку.
Вы бросаете a Word
в Word
. В Delphi кастинг обычно не конвертируется, поэтому вы просто переучитываете значение WideString
как указатель (a WideString
- указатель). Но 65025
не является допустимым значением указателя.
Вам придется явно преобразоватьWord
к WideString
, например , с помощью функции , как это (непроверенной, но должно работать):
function WordToBinary(W: Word): WideString;
var
I: Integer;
begin
Result := '0000000000000000';
for I := 0 to 15 do // process bits 0..15
begin
if Odd(W) then
Result[16 - I] := '1';
W := W shr 1;
end;
end;
Теперь вы можете сделать что-то вроде:
wo := 65025;
wstr := WordToBinary(wo);
wo := 10000;
wstr := wstr + ' ' + WordToBinary(wo);
Для обратного вам придется написать функцию, которая преобразует из WideString в Word. Я оставлю это упражнение вам.
Опять же, вы не можете бросить. Вам придется явно конвертировать. В обе стороны.