十六进制数转为字符串

news/2024/7/17 3:23:36
//-----------------------------------------------
//16进制字符转整数,16进制字符与字符串转换中间函数
//-----------------------------------------------
function HexToInt2(hex: AnsiString): 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: Ansichar): integer;
  begin
    if Ord(HexToken) > 97 then
      HexToken := Ansichar(Chr(Ord(HexToken) - 32));
      Result := 0;
    if (Ord(HexToken) > 47) and (Ord(HexToken) < 58) then { chars 0....9 }
      Result := Ord(HexToken) - 48
    else if (Ord(HexToken) > 64) and (Ord(HexToken) < 71) then { chars A....F }
      Result := Ord(HexToken) - 55;
  end;
var
  a16int:Integer;
  ancf:integer;
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);
  begin
    a16int := HexCharToInt(hex[i]);
    ancf := ncf(16, length(hex) - i);
    result := result + a16int * ancf;
   end;
end;

//-----------------------------------------------
//16进制字符转字符串
//-----------------------------------------------

function hextostring(str: AnsiString): AnsiString;
var
  s:AnsiString;
  i,j:integer;
  p:pchar;
  t:AnsiString;
  a16int:integer;
  a16char:AnsiString;
begin
   s:='';
   i:=1;
   //26044  236 ;182
   while i< length(str) do begin
      t:= str[i] + str[i+1];
      a16int := hextoint2(t);  //
//    a16int := 26044;
//    a16int := hextoint('ECB6');//
//    a16char := chr(a16int);
      if a16int <> 0 then
      begin
        a16char := ANSICHAR(a16int);
        s:= s + a16char;
      end;
//      s := #$EC + #$B6;
//      s := #236 + #182;
//      s := chr(236) + chr(182);
      i:=i+2;
   end;
   result:=s;

end;















本文转自鹅倌51CTO博客,原文链接: http://blog.51cto.com/kaixinbuliao/1871829,如需转载请自行联系原作者


http://www.niftyadmin.cn/n/1117486.html

相关文章

基于arm开发板四个按键控制四个灯亮

基于s5pv2410,cortex a8的四个按键每一个按键点了对应的灯 对于用汇编来编程的话不难&#xff0c;重点在于数据手册&#xff0c;电路图&#xff0c;管脚的看懂 直接上代码 .globl _start_start: ldr r0,0xe0200c40 按键控制寄存器的地址 ldr r1,[r0] bic r1,r1,#0xff bic一次只…

反复折叠纸张 java_为什么一张纸不能连续被折叠9次?

我记得在电视上看到过,如果是借助人的力量,最多只能折8次机器也只能折9次算算就知道了。如果纸的厚度达到了折叠面的一半就很难折叠了&#xff0c;由此可以推算&#xff0c;如果纸为正方形&#xff0c;边长为a&#xff0c;厚度为h&#xff0c;当折叠一次的时候&#xff0c;折叠…

四小时的回忆录

早上有课&#xff0c;但是我没去&#xff0c;躲在小小的被窝里&#xff0c;温暖。其实&#xff0c;今天阳光明媚。在早晨与正午之间&#xff0c;还有四小时&#xff0c;睡意在室友关门离去的那一瞬间&#xff0c;释然了。四小时&#xff0c;240分钟。在漫长的生命历程中&#x…

docker 容器中创建MySQL

2019独角兽企业重金招聘Python工程师标准>>> 这里不说docker 的安装 1、拉去镜像 docker pull mysql/mysql-server:latest 2、查看镜像 docker images 3、创建容器 docker run --name 容器的名字 -p 3306:3306 -e MYSQL_ROOT_PASSWORD密码 -d centos/mysq…

When you are old

When you are old ——W.B Yeats (William Butler Yeats&#xff09;When you are old and grey and full of sleep, And nodding by the fire, take down this book, And slowly read, and dream of the soft look Your eyes had once, and of their shadows deep; How many …

面试题:详细说明MVVM模式?

参考文档 1.newdocx.appcan.cn/data-dockin…Model:存储数据 View:显示数据 ViewModel:这层并不需要我们来编写,这是Vue自带的 当我们使用MVVM进行编码的时候,我们不用关注ViewModel这层是怎么实现的,我们只需要关注Model层和View层,我们在对MVVM这种模式进行编码的时候,编码的…

51单片机--键盘扫描

P3口接16个按键 #include<reg52.h>#define uint unsigned int#define uchar unsigned charsbit dulaP2^6;sbit welaP2^7;sbit key1P3^4;uchar code table[]{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0};uchar num,temp,num1;vo…

基于开源项目SharpMap的热力图(HeatLayer)实现。

当前公司需要一个用时较少的热力图呈现方案&#xff0c;在避免较底层的GDI开发和比较了多家GIS产品的实际效果之后&#xff0c;团队决定用sharpMap的API来实现&#xff0c;由于之前框架采用的是另外一个开源项目GMap.net&#xff0c;两个项目的交互必然存在一个过渡&#xff0c…