如何将字数传递给宽字符串?

How pass word number to widestring?

首先很抱歉我无法更好地描述我的问题。

我有的是字号 65025,即 0xFE01 或 11111110 00000001 二进制。我想将值传递给 wstr Word => 11111110 00000001.

我发现使用类型转换不起作用。

还有一个问题。如果我想添加另一个数字,如 10000 => 0x03E8,该怎么做。所以在结果中 widestring 应该引用值 0xFE01 0x03E8.

然后,如何将相同的数字从 widestring 检索到 word back?

var wstr: Widestring;
wo: Word;
begin
  wo := 65025;
  wstr := Widestring(wo);
  wo := 10000;
  wstr := wstr + Widestring(wo);
end

编辑:

我给出了另一个更简单的例子来说明我想要的...如果我有字值 49,它等于 ASCII 值 1,那么我希望 wstr 为“1”,即二进制形式的 b00110001 .我想将字号中的位复制到字符串中。

您正在将 Word 转换为 WideString。在 Delphi 中,转换通常不会转换,因此您只是将值 65025 重新解释为指针(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。我会把这个练习留给你。

再说一遍,你不能施法。您将必须明确转换。两种方式。

您似乎想将某个单词解释为 UTF-16 代码单元。在 Unicode Delphi 中,您将使用 Chr() 函数。但我怀疑你使用的是 ANSI Delphi。在这种情况下,使用 WideChar(wo) 转换为 WideChar