我只知道在delphi中的公式是Byte(S[1])*$100+Byte(S[2])
谁能告诉我在C#中应该怎么计算呢?
例如“白”的内码计算出来就是45271

解决方案 »

  1.   

    delphi中string是ANSI(DBCS编码),而C#中string是Unicode(UTF-16编码)。var
    s: string;
    begin
    s := '白';  // CP936 [GBK 1.0]
    // s在内存中的表示是B0 D7 ($B0D7->45271)
    end;在.Net中类似下面的情况:
    var
    strW: WideString;
    strA: string;
    begin
    strW := '白'; // $7D $76, (U+767D) UTF-16 format using Little Endian
    // 接下来按照代码页转换 (假设当前代码也为CP936)
    strA := strW;  // 调用了Windows API函数WideCharToMultiByte
    // 现在strA就和上面的例子一样了
    end;在C#中有一个Encoding类,你可以看看文档,思想是一样的。推荐阅读:.Net与字符编码(理论篇)