将两个字节合并为 WideChar

Posted

技术标签:

【中文标题】将两个字节合并为 WideChar【英文标题】:Combine two Bytes to WideChar 【发布时间】:2012-12-16 18:06:11 【问题描述】:

是否可以将两个Bytes 合并到WideChar,如果可以,那么如何? 例如,二进制中的字母“ē”是00010011 = 1900000001 = 1,或275 一起。

var
  WChar: WideChar;
begin
  WChar := WideChar(275); // Result is "ē"

var
  B1, B2: Byte;
  WChar: WideChar;
begin
  B1 := 19;
  B2 := 1;
  WChar := CombineBytesToWideChar(B1, B2); // ???

如何在 Delphi 中从两个字节中获取WideChar

【问题讨论】:

【参考方案1】:
WChar := WideChar(MakeWord(B1, B2));

【讨论】:

啊,我忘了 MakeWord,很好 :)【参考方案2】:

你应该能够创建一个类型并强制转换:

type
  DoubleByte = packed record
    B1: Byte;
    B2: Byte;
  end;

var
  DB: DoubleByte;
  WC: WideChar;
begin
  DB.B1 := 19;
  DB.B2 := 1;

  WC = WideChar(DB);
end;

如果转换失败,您可以改用 Move() 并简单地复制内存。

【讨论】:

以上是关于将两个字节合并为 WideChar的主要内容,如果未能解决你的问题,请参考以下文章

根据第一个字节将多条记录合并为一行

在 C# 中组合两个或多个字节数组的最佳方法

ASM字节码操作 工具类与常用类 如何合并两个类文件 StaticInitMerger 类介绍

将多字节数组图像数据合并为一个字节数组数据,并将WriteAllBytes合并为单个图像输出

在 AssemblyScript 中连接或合并 TypedArrays

使用 Java 合并 2 个 AAC 文件