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

- function HexToStr(str: string): string;
- function HexToInt(hex: string): integer;
- var
- i: integer;
- function Ncf(num, f: integer): integer;
- var
- i: integer;
- begin
- Result := 1;
- if f = 0 then exit;
- for i := 1 to f do
- result := result * num;
- end;
- function HexCharToInt(HexToken: char): integer;
- begin
- if HexToken > #97 then
- HexToken := Chr(Ord(HexToken) - 32);
- Result := 0;
- if (HexToken > #47) and (HexToken < #58) then { chars 0....9 }
- Result := Ord(HexToken) - 48
- else if (HexToken > #64) and (HexToken < #71) then { chars A....F }
- Result := Ord(HexToken) - 65 + 10;
- end;
- begin
- result := 0;
- hex := ansiuppercase(trim(hex));
- if hex = '' then
- exit;
- for i := 1 to length(hex) do
- result := result + HexCharToInt(hex[i]) * ncf(16, length(hex) - i);
- end;
- var
- s, t: string;
- i, j: integer;
- p: pchar;
- begin
- s := '';
- i := 1;
- while i < length(str) do begin
- t := str[i] + str[i + 1];
- s := s + chr(hextoint(t));
- i := i + 2;
- end;
- result := s;
- end;

//********************************************************************
C#版:

- ///<summary>
- /// 从16进制转换成汉字
- /// </summary>
- /// <param name="hex"></param>
- /// <param name="charset">编码,如"utf-8","gb2312"</param>
- /// <returns></returns>
- public string HexToStr(string hex, string charset)
- {
- if (hex == null)
- throw new ArgumentNullException("hex");
- hex = hex.Replace(",", "");
- hex = hex.Replace("\n", "");
- hex = hex.Replace("\\", "");
- hex = hex.Replace(" ", "");
- if (hex.Length % 2 != 0)
- {
- hex += "20";//空格
- }
- // 需要将 hex 转换成 byte 数组。
- byte[] bytes = new byte[hex.Length / 2];
- for (int i = 0; i < bytes.Length; i++)
- {
- try
- {
- // 每两个字符是一个 byte。
- bytes[i] = byte.Parse(hex.Substring(i * 2, 2),
- System.Globalization.NumberStyles.HexNumber);
- }
- catch
- {
- // Rethrow an exception with custom message.
- throw new ArgumentException("hex is not a valid hex number!", "hex");
- }
- }
- System.Text.Encoding chs = System.Text.Encoding.GetEncoding(charset);
- return chs.GetString(bytes);
- }

十六进制字符串转化成字符串输出HexToStr(Delphi版、C#版)的更多相关文章
- js中对象转化成字符串、数字或布尔值的转化规则
js中对象可以转化成 字符串.数字.布尔值 一.对象转化成字符串: 规则: 1.如果对象有toString方法,则调用该方法,并返回相应的结果:(代码通常会执行到这,因为在所有对象中都有toStrin ...
- 关于C#的decimal浮点类型转化成字符串时末尾存在多个0
首先,对于浮点类型,double和float存在精度丢失问题,这一点在之前的一篇博文中有提到(C# double类型精度丢失问题),于是,一般时候推荐大家使用decmal,特别是涉及到一些金融计算时, ...
- 通过pinyin4j.jar将(汉字拼音混合字符串)转化成字母首字母
通过pinyin4j.jar将(汉字拼音混合字符串)转化成字母首字母 例如 我的中国心 ==> wdzgx 我的中国心ya ==> wdzgxya woai我的中国 ==> w ...
- 将数据转化成字符串时:用字符串的链接 还是 StringBuilder
/* 目的:将数据转化成字符串时:用字符串的链接 还是 StringBuilder呢? */ public class Test{ public static void main(String[] a ...
- Android--将Bitmip转化成字符串
因为自己做的东西想要上传到服务器,所以就选择了将Bitmip转化成了字符串在上传 其它格式的图片我们好像可以用Bitmap.Factory 去将他们转化成BitMap 转化成字符串的代码 //将bit ...
- C#double转化成字符串 保留小数位数, 不以科学计数法的形式出现
在C#中大家都会遇到这种情况 double类型的数据,需要格式化(保留N未有效数字)或者是保留N为小数等情况,我们往往采取double.tostring("参数");的方法.下 ...
- js将字符串转化成函数:eval(logOutCallbackFun+"()");
js将字符串转化成函数:eval(logOutCallbackFun+"()");
- laravel 将数组转化成字符串 再把字符串转化成数组
这是在给阮少翔改代码的时候用的方法, 开始的数据用explored转化成数组不是想要的结果, 我就自己写了一个方法把有用的信息提取出来拼接成一个字符串, 再用explored将字符串转化成数组. ...
- js把其他类型转化成字符串
js把其他类型转化成字符串 一.总结 一句话总结:类型转换中的强制类型转换分为类型转换函数和类型名强制.js后一种和其它语言不同,是类型类的构造方法.String() 二.js把其他类型转化成字符串 ...
随机推荐
- Java-马士兵设计模式学习笔记-观察者模式-AWT简单例子
1.AWT简单例子 TestFrame.java import java.awt.Button; import java.awt.Frame; import java.awt.event.Action ...
- scp 传文件
1. 从远程服务器上拷贝文件(指定远程服务器的用户名:IP:文件 本地文件名) scp root@121.43.16.131:/etc/supervisor/supervisord.conf ~ ...
- Centos环境下部署游戏服务器-iptables
简介: 图1 Centos做为服务器级操作系统,防火墙是不可缺少的.防火墙的主要功能为控制进出网络包,防火墙就如小区门卫的工作职责,检查出入小区居民的身份,如果不符合小区门卫管理条例 ...
- 汇编语言---call和ret指令
汇编语言--call和ret指令 call和ret指令 call和ret指令都是转移指令,它们都修改IP,或同时修改CS和IP. 它们经常被共同用来实现子程序的设计. ret和retf ret指令用栈 ...
- Struts2笔记——自定义拦截器
需要两个步骤,自定义类实现拦截器接口和在struts.xml注册拦截器 =============================== 1.自定义类实现com.opensymphony.xwork2. ...
- POSIX、XNU
POSIX 表示可移植操作系统接口(Portable Operating System Interface ,缩写为 POSIX ),POSIX标准定义了操作系统应该为应用程序提供的接口标准,是IEE ...
- Hadoop集群(第9期)_MapReduce初级案例
1.数据去重 "数据去重"主要是为了掌握和利用并行化思想来对数据进行有意义的筛选.统计大数据集上的数据种类个数.从网站日志中计算访问地等这些看似庞杂的任务都会涉及数据去重.下面就 ...
- Jenkins+Maven+Git搭建持续集成和自动化部署的配置手记
前言 持续集成这个概念已经成为软件开发的主流,可以更频繁的进行测试,尽早发现问题并提示.自动化部署就更不用说了,可以加快部署速度,并可以有效减少人为操作的失误.之前一直没有把这个做起来,最近的新 ...
- URAL1204. Idempotents(扩展欧几里得)
1204 大体推推 会出来这个式子 x(x-1) = k*n;n = p*q ;x(x-1)%(p*q)==0; 因为p,q都为素数 那也就是说x和x-1中必定包含这两个数 而且一个里面只能有一个 不 ...
- hdu 4622 Reincarnation trie树+树状数组/dp
题意:给你一个字符串和m个询问,问你l,r这个区间内出现过多少字串. 连接:http://acm.hdu.edu.cn/showproblem.php?pid=4622 网上也有用后缀数组搞得. 思路 ...