//注意:Delphi2010以下版本默认的字符编码是ANSI,VS2010的默认编码是UTF-8,delphi版得到的字符串须经过Utf8ToAnsi()转码才能跟C#版得到的字符串显示结果一致。

//Delphi版:

  1. function HexToStr(str: string): string;
  2. function HexToInt(hex: string): integer;
  3. var
  4. i: integer;
  5. function Ncf(num, f: integer): integer;
  6. var
  7. i: integer;
  8. begin
  9. Result := 1;
  10. if f = 0 then exit;
  11. for i := 1 to f do
  12. result := result * num;
  13. end;
  14. function HexCharToInt(HexToken: char): integer;
  15. begin
  16. if HexToken > #97 then
  17. HexToken := Chr(Ord(HexToken) - 32);
  18. Result := 0;
  19. if (HexToken > #47) and (HexToken < #58) then { chars 0....9 }
  20. Result := Ord(HexToken) - 48
  21. else if (HexToken > #64) and (HexToken < #71) then { chars A....F }
  22. Result := Ord(HexToken) - 65 + 10;
  23. end;
  24. begin
  25. result := 0;
  26. hex := ansiuppercase(trim(hex));
  27. if hex = '' then
  28. exit;
  29. for i := 1 to length(hex) do
  30. result := result + HexCharToInt(hex[i]) * ncf(16, length(hex) - i);
  31. end;
  32. var
  33. s, t: string;
  34. i, j: integer;
  35. p: pchar;
  36. begin
  37. s := '';
  38. i := 1;
  39. while i < length(str) do begin
  40. t := str[i] + str[i + 1];
  41. s := s + chr(hextoint(t));
  42. i := i + 2;
  43. end;
  44. result := s;
  45. end;

//********************************************************************

C#版:

  1. ///<summary>
  2. /// 从16进制转换成汉字
  3. /// </summary>
  4. /// <param name="hex"></param>
  5. /// <param name="charset">编码,如"utf-8","gb2312"</param>
  6. /// <returns></returns>
  7. public string HexToStr(string hex, string charset)
  8. {
  9. if (hex == null)
  10. throw new ArgumentNullException("hex");
  11. hex = hex.Replace(",", "");
  12. hex = hex.Replace("\n", "");
  13. hex = hex.Replace("\\", "");
  14. hex = hex.Replace(" ", "");
  15. if (hex.Length % 2 != 0)
  16. {
  17. hex += "20";//空格
  18. }
  19. // 需要将 hex 转换成 byte 数组。
  20. byte[] bytes = new byte[hex.Length / 2];
  21.  
  22. for (int i = 0; i < bytes.Length; i++)
  23. {
  24. try
  25. {
  26. // 每两个字符是一个 byte。
  27. bytes[i] = byte.Parse(hex.Substring(i * 2, 2),
  28. System.Globalization.NumberStyles.HexNumber);
  29. }
  30. catch
  31. {
  32. // Rethrow an exception with custom message.
  33. throw new ArgumentException("hex is not a valid hex number!", "hex");
  34. }
  35. }
  36. System.Text.Encoding chs = System.Text.Encoding.GetEncoding(charset);
  37. return chs.GetString(bytes);
  38. }

十六进制字符串转化成字符串输出HexToStr(Delphi版、C#版)的更多相关文章

  1. js中对象转化成字符串、数字或布尔值的转化规则

    js中对象可以转化成 字符串.数字.布尔值 一.对象转化成字符串: 规则: 1.如果对象有toString方法,则调用该方法,并返回相应的结果:(代码通常会执行到这,因为在所有对象中都有toStrin ...

  2. 关于C#的decimal浮点类型转化成字符串时末尾存在多个0

    首先,对于浮点类型,double和float存在精度丢失问题,这一点在之前的一篇博文中有提到(C# double类型精度丢失问题),于是,一般时候推荐大家使用decmal,特别是涉及到一些金融计算时, ...

  3. 通过pinyin4j.jar将(汉字拼音混合字符串)转化成字母首字母

    通过pinyin4j.jar将(汉字拼音混合字符串)转化成字母首字母 例如 我的中国心    ==> wdzgx 我的中国心ya ==> wdzgxya woai我的中国 ==> w ...

  4. 将数据转化成字符串时:用字符串的链接 还是 StringBuilder

    /* 目的:将数据转化成字符串时:用字符串的链接 还是 StringBuilder呢? */ public class Test{ public static void main(String[] a ...

  5. Android--将Bitmip转化成字符串

    因为自己做的东西想要上传到服务器,所以就选择了将Bitmip转化成了字符串在上传 其它格式的图片我们好像可以用Bitmap.Factory 去将他们转化成BitMap 转化成字符串的代码 //将bit ...

  6. C#double转化成字符串 保留小数位数, 不以科学计数法的形式出现

      在C#中大家都会遇到这种情况 double类型的数据,需要格式化(保留N未有效数字)或者是保留N为小数等情况,我们往往采取double.tostring("参数");的方法.下 ...

  7. js将字符串转化成函数:eval(logOutCallbackFun+"()");

    js将字符串转化成函数:eval(logOutCallbackFun+"()");

  8. laravel 将数组转化成字符串 再把字符串转化成数组

    这是在给阮少翔改代码的时候用的方法, 开始的数据用explored转化成数组不是想要的结果, 我就自己写了一个方法把有用的信息提取出来拼接成一个字符串, 再用explored将字符串转化成数组.   ...

  9. js把其他类型转化成字符串

    js把其他类型转化成字符串 一.总结 一句话总结:类型转换中的强制类型转换分为类型转换函数和类型名强制.js后一种和其它语言不同,是类型类的构造方法.String() 二.js把其他类型转化成字符串 ...

随机推荐

  1. Java-马士兵设计模式学习笔记-观察者模式-AWT简单例子

    1.AWT简单例子 TestFrame.java import java.awt.Button; import java.awt.Frame; import java.awt.event.Action ...

  2. scp 传文件

    1. 从远程服务器上拷贝文件(指定远程服务器的用户名:IP:文件    本地文件名) scp root@121.43.16.131:/etc/supervisor/supervisord.conf ~ ...

  3. Centos环境下部署游戏服务器-iptables

    简介:   图1        Centos做为服务器级操作系统,防火墙是不可缺少的.防火墙的主要功能为控制进出网络包,防火墙就如小区门卫的工作职责,检查出入小区居民的身份,如果不符合小区门卫管理条例 ...

  4. 汇编语言---call和ret指令

    汇编语言--call和ret指令 call和ret指令 call和ret指令都是转移指令,它们都修改IP,或同时修改CS和IP. 它们经常被共同用来实现子程序的设计. ret和retf ret指令用栈 ...

  5. Struts2笔记——自定义拦截器

    需要两个步骤,自定义类实现拦截器接口和在struts.xml注册拦截器 =============================== 1.自定义类实现com.opensymphony.xwork2. ...

  6. POSIX、XNU

    POSIX 表示可移植操作系统接口(Portable Operating System Interface ,缩写为 POSIX ),POSIX标准定义了操作系统应该为应用程序提供的接口标准,是IEE ...

  7. Hadoop集群(第9期)_MapReduce初级案例

    1.数据去重  "数据去重"主要是为了掌握和利用并行化思想来对数据进行有意义的筛选.统计大数据集上的数据种类个数.从网站日志中计算访问地等这些看似庞杂的任务都会涉及数据去重.下面就 ...

  8. Jenkins+Maven+Git搭建持续集成和自动化部署的配置手记

    前言    持续集成这个概念已经成为软件开发的主流,可以更频繁的进行测试,尽早发现问题并提示.自动化部署就更不用说了,可以加快部署速度,并可以有效减少人为操作的失误.之前一直没有把这个做起来,最近的新 ...

  9. URAL1204. Idempotents(扩展欧几里得)

    1204 大体推推 会出来这个式子 x(x-1) = k*n;n = p*q ;x(x-1)%(p*q)==0; 因为p,q都为素数 那也就是说x和x-1中必定包含这两个数 而且一个里面只能有一个 不 ...

  10. hdu 4622 Reincarnation trie树+树状数组/dp

    题意:给你一个字符串和m个询问,问你l,r这个区间内出现过多少字串. 连接:http://acm.hdu.edu.cn/showproblem.php?pid=4622 网上也有用后缀数组搞得. 思路 ...