如何将字数传递给宽字符串?
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
。
首先很抱歉我无法更好地描述我的问题。
我有的是字号 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
。