1.16 TO 10

********************************************************

16转10,否则输出-1

function Hex(c: char): Integer;
var
  x: Integer;
begin
  if ( Ord(c)>= Ord('0')) and (Ord(c) <= Ord('9')) then
    x:= Ord(c) - Ord('0')
  else if (Ord(c) >= Ord('a')) and (Ord(c) <= Ord('f')) then
    x:= Ord(c) - Ord('a') + 10
  else if (Ord(c) >= Ord('A')) and (Ord(c) <= Ord('F')) then
    x:= Ord(c) - Ord('A') + 10
  else
    x:= -1;                                       //输入错误
  Result:= x;
end;

2.字符 TO 10

***************************************************************
该函数接收1~2个,字符转换成功后输出对应10进制数的值,否则输出-1

function HexToInt(Str: string): Integer;
var
  tmpInt1, tmpInt2: Integer;
begin
  if Length(Str) = 1 then
  begin
    Result:= Hex(Str[1]);
  end
  else if Length(Str) = 2 then
  begin
    tmpInt1:= Hex(Str[1]);
    tmpInt2:= Hex(Str[2]);
    if (tmpInt1 = -1) or (tmpInt2 = -1) then
      Result:= -1
    else
      Result:= tmpInt1 * 16 + tmpInt2;
  end
  else
    Result:= -1;                                  //输入错误,转换失败
end;

3.字符串 TO ASCII码

*******************************************************************
字符串转换成ASCII码字符串

function StrToHexStr(const S: string): string;
var
  i: Integer;
begin
  for i:= 1 to Length(S) do
  begin
    if i = 1 then
      Result:= IntToHex(Ord(S[1]), 2)
    else
      Result:= Result + ' ' + IntToHex(Ord(S[i]), 2);
  end;
end;

4.字符串去掉所有空格

***********************************************************************

该函数去掉字符串中所有空格

function TrimAll(Str: string): string;
var
  mLen, i: Integer;
begin
  mLen:= Length(Str);
  //初始化返回值
  Result:= '';
  for i:= 0 to mLen do
  begin
    //是空格就去掉
    if Str[i] = '' then
      Continue;
    Result:= Result + Str[i];
  end;
end;

5.10 TO 2

**************************************************
十进制转换成二进制字符串

function DTob(decimal:longint):string;
const symbols:string[16]='01';
var
  scratch:string;
  remainder:byte;
begin
  repeat
    remainder:=decimal mod 2;
    scratch:=symbols[remainder+1]+scratch;
    decimal:=decimal div 2;
  until(decimal=0);
  result:=scratch;
end;

6.10 TO16字符

**************************************************
1.十进制转换成十六进制字符串

function DToHex(decimal:longint):string;
const symbols:string[16]='0123456789abcdef';
var
  scratch:string;
  remainder:byte;
begin
  repeat
    remainder:=decimal mod 16;
    scratch:=symbols[remainder+1]+scratch;
    decimal:=decimal div 16;
  until(decimal=0);
  result:=scratch;
end;

2.十进制转十六进制字符

var HexArr: array[1..15]of string= ('1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');

function Int2Hex(Value: Integer): string;
    var
      iTemp: Integer;
      i: Integer;
    begin
      Result :='';
      i := 0;
      while i<4 do
      begin
        case i of
          0: iTemp := Value shr 24 and $FF;
          1: iTemp := Value shr 16 and $FF;
          2: iTemp := Value shr 8 and $FF;
          3: iTemp := Value and $FF;
        end;
        if not Boolean(iTemp) then Result := Result + '00'
        else
        begin
          Result := Result + HexArr[iTemp div 16];
          Result := Result + HexArr[iTemp mod 16];
        end;
        Inc(i);
      end;
    end;

7.字符串 TO 16进制

*************************************************************************

Eidt1.Text:=StrToInt('$'+'0000FFFF');   //65535

2>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

unit Unit2;

interface
uses
SysUtils,Math;
type
TConversion = class
public
    //10 进制 to 2,8,16 进制
    function inttoBitStr(intstr: string): string;
    function IntToHexStr(intStr: string): String;//10 = 2
    function IntToOStr(intstr : string): string;//?????

//2进制 to 10,8,16 进制
    function BittoInt(BitStr:   String):   LongInt;// 2 = 10
    function BitStrToHextStr(const   BitStr   :   String)   :   String;//2 = 16
    function BitStrToOStr(const   BitStr   :   String)   :   String;//2 = 8

//16 > 10 2   8 进制
    function HextoIntStr(HexStr: String): string;
    function HexToBitStr(HexStr:   string): string;
    function HexToOStr(HexStr:   string): string;
   
    //八进制转换成二进制字符串
    function OtoBitStr(O : string):string;
    function OtoIntStr(O : string):string;
    function OtoHexStr(O : string):string;
end;
var
TC :TConversion;

implementation

{ TConversion }
//2 进制 to 10 进制

function TConversion.BittoInt(BitStr: String): LongInt;
var
      i,Size:   Integer;
begin
      Result:=0;
      Size:=Length(BitStr);
      for   i:=Size   downto   1   do
      begin
        //例如 1010
          if Copy(BitStr,i,1)='1'   then
            Result:=Result+(1   shl   (Size-i));
      end;
//第二种方法
//二进制转换为十进制 start
{
VAR
str : String;
Int : Integer;
i : integer;

Str := UpperCase(Edit1.Text);
Int := 0;
FOR i := 1 TO Length(str) DO
    Int := Int * 2 + ORD(str[i]) - 48;
Edit2.Text:=IntToStr(int);
}
//二进制转换为十进制 end;
//第三中方法
{
function hextoint(s: string): Double;
begin
while Length(s) <>0 do
begin              //2^(长度-1)次方
    if s[1]='1' then Result:=Result+power(2,Length(s)-1);
    s:=Copy(s,2,Length(s));
end
end;
}
end;

function TConversion.BitStrToHextStr(const BitStr: String): String;
var
vD : Byte;
I : Integer;
vHextStr : String;
vP : PChar;
vLen : Integer;
begin
vLen := Length(BitStr);
if vLen mod 4 > 0 then
begin
    SetLength(vHextStr,   vLen   div   4   +   1);
    vLen := vlen div 4 + 1;
end
else
begin
    SetLength(vHextStr,   vLen   div   4);
    vLen := vlen div 4 ;
end;

//初始化
vD := 0;
vP := PChar(BitStr)+length(BitStr)-1;
I := 0;   //开始计数

while vP^ <> #0 do
begin
    if vp^ = '1' then
    begin
      case i of
      0:      vD :=vd+1;
      1:      vD :=vd+2;
      2:      vD :=vd+4;
      3:      vD :=vd+8;
      end;
    end;

Dec(vP);
    Inc(I);
    if I = 4 then
    begin
      case vD of
        0..9 : vHextStr[vLen] := Chr(vD + $30);
        10..15 : vHextStr[vLen] := Chr(vD - 10 + $41);
      end;
      Dec(vLen);
      I   :=   0;
      vD   :=   0;
    end;
end;

if I > 0then
begin
    case   vD   of
      0..9 : vHextStr[vLen] := Chr(vD + $30);
      10..15 : vHextStr[vLen] := Chr(vD + $41);
    end;
end;

Result := vHextStr;
end;

function TConversion.BitStrToOStr(const BitStr: String): String;
var
vD : Byte;
I : Integer;
vHextStr : String;
vP : PChar;
vLen : Integer;
begin
vLen := Length(BitStr);
if vLen mod 3 > 0 then
begin
    SetLength(vHextStr,   vLen   div   3   +   1);
    vLen := vlen div 3 + 1;
end
else
begin
    SetLength(vHextStr,   vLen   div   3);
    vLen := vlen div 3 ;
end;

//初始化
vD := 0;
vP := PChar(BitStr)+length(BitStr)-1;
I := 0;   //开始计数

while vP^ <> #0 do
begin
    if vp^ = '1' then
    begin
      case i of
      0:      vD :=vd+1;
      1:      vD :=vd+2;
      2:      vD :=vd+4;
      end;
    end;

Dec(vP);
    Inc(I);
    if I = 3 then
    begin
      case vD of
        0..9 : vHextStr[vLen] := Chr(vD + $30);
      end;
      Dec(vLen);
      I   :=   0;
      vD   :=   0;
    end;
end;

if I > 0then
begin
    case   vD   of
      0..9 : vHextStr[vLen] := Chr(vD + $30);
    end;
end;

Result := vHextStr;
end;

function TConversion.HexToBitStr(HexStr: string): string;
const
      cBitStrings:   array[0..15]   of   string   =
(
'0000',   '0001',   '0010',   '0011',
'0100',   '0101',   '0110',   '0111',
'1000',   '1001',   '1010',   '1011',
'1100',   '1101',   '1110',   '1111'
);
var
I:   Integer;
begin
Result   :=   '';
for   I   :=   1   to   Length(HexStr)   do
      Result   :=   Result   +   cBitStrings[StrToIntDef('$'   +   HexStr[I],   0)];
while   Pos('0',   Result)   =   1   do   Delete(Result,   1,   1);
end;   {   HexToBit   }

function TConversion.HextoIntStr(HexStr: String): string;
begin
result:= IntToStr(StrToInt('$' + (HexStr)));
end;

function TConversion.HexToOStr(HexStr: string): string;
begin
Result := BitStrToOStr(HexToBitStr(HexStr));
end;

function TConversion.inttoBitStr(intstr: string): string;
var
i :Integer;
begin
i := StrToInt(intstr);
while i <>0 do
begin              //i mod 2取模,再使用format格式化
   result:=Format('%d'+result,[i mod 2]);
   i:=i div 2
end
end;
//10进制装换 2进制 第二种方法
{function TConversion.IntToBitStr(Value, Size: Integer): String;
var
i: Integer;
begin
Result:='';
for i:=Size-1 downto 0 do begin
    if Value and (1 shl i)<>0 then begin
       Result:=Result+'1';
end else begin
       Result:=Result+'0';
end;
end;
end;}

function TConversion.IntToHexStr(intStr: string): String;
begin
    Result:=inttoBitStr(intstr);
end;

function TConversion.IntToOStr(intstr: string): string;
begin
Result := BitStrToHextStr(inttoBitStr(intstr));
end;

function TConversion.OtoBitStr(O: string): string;
const
      cBitStrings:   array[0..7]   of   string   =
(
'000',   '001',   '010',   '011',
'100',   '101',   '110',   '111'
);  
var
i,j:   Integer;
begin
Result   :=   '';
for   I   :=   1   to   Length(o)   do
begin
    j:=strtoint(o[i]);
    Result   :=   Result   +   cBitStrings[j];
end;
while   Pos('0',   Result)   =   1   do   Delete(Result,   1,   1);
end;
function TConversion.OtoHexStr(O: string): string;
begin
Result :=BitStrToHextStr(OtoBitStr(o));
end;

function TConversion.OtoIntStr(O: string): string;
begin
Result := OToIntStr(OtoBitStr(o));
end;

end.

delphi -- 进制转换 函数表的更多相关文章

  1. Delphi进制转换(二进制/十进制/十六进制)

    http://www.cnblogs.com/ywangzi/archive/2012/12/12/2815219.html   Delphi进制转换(二进制/十进制/十六进制)  2009-11-2 ...

  2. SQL Server 进制转换函数

    一.背景 前段时间群里的朋友问了一个问题:“在查询时增加一个递增序列,如:0x00000001,即每一个都是36进位(0—9,A--Z),0x0000000Z后面将是0x00000010,生成一个像下 ...

  3. [No000071]C# 进制转换(二进制、十六进制、十进制互转)

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  4. JS中的进制转换以及作用

    js的进制转换, 分为2进制,8进制,10进制,16进制之间的相互转换, 我们直接利用 对象.toString()即可实现: //10进制转为16进制 ().toString() // =>&q ...

  5. 结合stack数据结构,实现不同进制转换的算法

    #!/usr/bin/env python # -*- coding: utf-8 -*- # learn <<Problem Solving with Algorithms and Da ...

  6. 进制转换( C++字符数组 )

    注: 较为简便的方法是用 整型(int)或浮点型(long.double 注意:该类型不一定能够准确存储数据) 来存放待转换的数值,可直接取余得到每一位数值 较为稳定的方法是用 字符数组储存待转换的数 ...

  7. JS 进制转换

    十进制转换成其他进制 objectname.toString([radix])   objectname 必选项.要得到字符串表示的对象. radix 可选项.指定将数字值转换为字符串时的进制. 例如 ...

  8. php的进制转换

    学习了php的进制转换,有很多的知识点,逻辑,也有最原始的笔算,但是我们还是习惯使用代码来实现进制的转换,进制的转换代码有如下:二进制(bin)八进制( oct)十进制( dec)十六进制( hex) ...

  9. C++ 中数串互转、进制转换的类

    /******************************************************************** created: 2014/03/16 22:56 file ...

随机推荐

  1. PowerDesigner(五)-概念数据模型(CDM生成LDM,PDM和OOM)

    概念数据模型 概念数据模型(Conceptual Data Model,CDM):表达的是数据整体逻辑结构,该结构独立于任何软件和数据存储结构,即它只是系统分析人员,应用程序设计人员,维护人员和用户之 ...

  2. ios loading视图动画(模仿58同城)

    最近看了58同城的加载视图,感觉很不错,如下图: 所以想模仿写一个,下载58同城的app,解压,发现它用的是图片来实现的动画效果, 并不是绘制出来的,所以这就相对简单些了,其实整个动画的逻辑不复杂,无 ...

  3. 智传播客hadoop视频学习笔记(共2天)

    第一天:1.答疑解惑•  就业前景•  学习hadoop要有什么基础•  hadoop会像塞班一样,热一阵子吗•  hadoop学习起来容易还是困难•  课堂上的学习方法(所有实验必须按照要求做,重原 ...

  4. poj 2965 The Pilots Brothers' refrigerator枚举(bfs+位运算)

    //题目:http://poj.org/problem?id=2965//题意:电冰箱有16个把手,每个把手两种状态(开‘-’或关‘+’),只有在所有把手都打开时,门才开,输入数据是个4*4的矩阵,因 ...

  5. requirejs 小结

    1,“生搬硬套”-----js依赖的写法,依赖关系如这里的嵌套关系: /** * 模块化加载,注意各个js文件的依赖关系(嵌套) */ require(["jquery"], fu ...

  6. UVa 10900 (连续概率、递推) So you want to be a 2n-aire?

    题意: 初始奖金为1块钱,有n个问题,连续回答对i个问题后,奖金变为2i元. 回答对每道题的概率在t~1之间均匀分布. 听到问题后有两个选择: 放弃回答,拿走已得到的奖金 回答问题: 如果回答正确,奖 ...

  7. BZOJ3792: 跑步

    题解: 感觉被坑出翔... 显然我们把矩阵乘法中的点当成原图中的边就可以了. 先写opertor 在struct里面居然只能带一个变量?... 放到外面,然后还得加引用? 然后题目描述不清,重边怎么算 ...

  8. Java [leetcode 17]Letter Combinations of a Phone Number

    题目描述: Given a digit string, return all possible letter combinations that the number could represent. ...

  9. 《C#并行编程高级教程》第9章 异步编程模型 笔记

    这个章节我个人感觉意义不大,使用现有的APM(异步编程模型)和EAP(基于时间的异步模型)就很够用了,针对WPF和WinForm其实还有一些专门用于UI更新的类. 但是出于完整性,还是将一下怎么使用. ...

  10. LINQ,EF联合查询join

    public object GetListAdmin() { //return db_C56.Admins //   .Where(a => a.Status != "D") ...