代码改变世界

delphi 字符转换

2017-02-21 15:07  绿贝  阅读(779)  评论(0编辑  收藏  举报

delphi经常可以看见#10,#12等,特别是在.dfm文件里面。

比如:EditLabel.Caption = #30005#23376#31080#26657#39564#30721#30005#23376#31080#26657#39564#30721

都知道这一长串带#的是某些字,但直接看dfm文件是看不出来的。

这里说一下#的意思。#在delphi里面表示10进制。然后delphi里面是采用的unicode编码。

那么#30005就好理解了,首先把30005转换成16进制成7535,然后加上\u,变成\u7535,然后在网上查unicode编码转换。查出来了吗? 是“电”这个字。

当然有更简单的方法:

如我写的这个方法。

public static String decode(String code){
  String[] codeArray = code.split("#");
  StringBuffer sb = new StringBuffer();
  for(String c:codeArray){
  if("".equals(c)){
    continue;
  }
  sb.append((char)Integer.parseInt(c) );
  }
  return sb.toString();
}

 比如这个#30005#23376#31080#26597#35810#26465#20214

返回结果是:电子票查询条件