【发布时间】:2013-03-01 13:22:21
【问题描述】:
我在这里有一个简单的问题。如何在 Delphi - 7 中将WideChar 转换为 2xByte?我搜索了互联网和StackOverflow,但没有结果...
【问题讨论】:
标签: delphi bytearray byte widechar
我在这里有一个简单的问题。如何在 Delphi - 7 中将WideChar 转换为 2xByte?我搜索了互联网和StackOverflow,但没有结果...
【问题讨论】:
标签: delphi bytearray byte widechar
David 给了你更好的方式,即,
var
b1, b2: Byte;
wc: WideChar;
...
b1 := WordRec(wc).Lo;
b2 := WordRec(wc).Hi;
其他一些选项(只是为了好玩):
b1 := Lo(Word(wc));
b2 := Hi(Word(wc));
和
b1 := Byte(wc);
b2 := Byte(Word(wc) shr 8);
和
b1 := PByte(@wc)^;
b2 := PByte(NativeUInt(@wc) + 1)^;
和
var
wc: WideChar;
bytes: WordRec absolute wc;
begin
// Magic! The bytes are already found in bytes.Lo and bytes.Hi!
【讨论】:
Lo 和 Hi 函数参数的本机数据类型,因此我将使用 Lo(Integer(wc)); 和 Hi。绝对指令 magic 在我看来是最简单的,但我会使用bytes: array[0..1] of Byte absolute wc;,因为这个问题要求字节,而不是WordRec。 [+1ed]
WordRec 的字段是字节,但在我看来它的可读性较差!
有很多方法可以做到这一点。例如,我个人的选择是:
var
b1, b2: Byte;
wc: WideChar;
....
b1 := WordRec(wc).Lo;
b2 := WordRec(wc).Hi;
【讨论】: