【问题标题】:How pass word number to widestring?如何将字号传递给宽字符串?
【发布时间】:2018-07-07 00:54:10
【问题描述】:

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

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

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

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

然后,如何从宽字符串到单词中检索相同的数字?

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

编辑:

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

【问题讨论】:

  • 尝试用 int google 到 string binary pascal delphi
  • @Zamrony P. Juhara:是否可以一次复制所有 8 或 16 口?我找到了在一个有 8 个步骤的循环中复制位的示例。
  • 是的,您可以通过将零放在高位上来使用传递 8 位二进制字符串作为 16 位二进制字符串
  • 那么您的问题是如何将整数转换为二进制表示?
  • @David Heffernan:我想将位从单词复制到宽字符串。

标签: delphi numbers widestring


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    您正在将 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 转换 从WideString 转换为Word。我会把这个练习留给你。

    同样,你不能施放。您将必须显式转换。两种方式。

    【讨论】:

    • 很遗憾你不明白我的意思。在示例中,您应该将 16 位从数字字复制到宽字符串。我只是在寻找正确的体温计。类似这样的伪代码:`function WordToBinary(num: Word): WideString; begin for i:=0 to 15 do Result := num shr 1;结尾; ` 但这会产生错误...[错误] 不兼容的类型:'WideString' 和 'Integer'
    • 看到你接受了大卫的回答。如果那是你想要的,那么你应该这么说。提到二进制值和转换为 WideString 非常令人困惑。只需执行wstr := WideChar(65025) + WideChar(10000);
    • 是的。这所有的东西:-)
    猜你喜欢
    • 1970-01-01
    • 2018-09-02
    • 2016-10-25
    • 1970-01-01
    • 1970-01-01
    • 2014-09-06
    • 2018-12-13
    • 2018-05-20
    • 1970-01-01
    相关资源
    最近更新 更多