怎么把一个字符串转换成16进制数据

怎么把一个字符转换16进制数据,然后再把16进制数转成字符串?
unit BinHexTools;

interface
function HexToBin(HexNr : string): string; //把十六进制字符串转换为二进制字符串
function HexCharToInt(HexToken : char):Integer; //转换一个十六进制字符为整数
function HexCharToBin(HexToken : char): string;//转换一个十六进制字符为二进制字符串
function pow(base, power: integer): integer;//指数函数
function BinStrToInt(BinStr : string) : integer;//把二进制字符串转换为整数
function DecodeSMS7Bit(PDU : string):string;// 解码一个7-bit SMS (GSM 03.38) 代销和经销的区别ASCII
function ReverseStr(SourceStr : string) : string; //反转一个字符串

涡流纺纱implementation
uses sysutils, dialogs; 

function HexCharToInt(HexToken : char):Integer; 
begin 
  {if HexToken>#97 then HexToken:=Chr(Ord(HexToken)-32); 
  { use lowercase aswell }

  Result:=0;
  if (HexToken>#47) and (HexToken<#58) then { 9 }
  Result:=Ord(HexToken)-48
  else if (HexToken>#64) and (HexToken<#71) then { F }
  Result:=Ord(HexToken)-65 + 10;
end;

function HexCharToBin(HexToken : char): string;
var DivLeft : integer;
begin
  DivLeft:=HexCharToInt(HexToken); { first HEX->BIN }
  Result:='';
  { Use reverse dividing }
  repeat { Trick; divide by 2 }
  if odd(DivLeft) then { result = odd ? then bit = 1 }
  Result:='1'+Result { result = even ? then bit = 0 }
  else
  Result:='0'+Result;
  DivLeft:=DivLeft div 2; { keep dividing till 0 left and length = 4 }
  until (DivLeft=0) and (length(Result)=4); { 1 token = nibble = 4 bits }
end;

function HexToBin(HexNr : string): string; 
{ only stringsize is limit of binnr } 
var Counter : integer; 
begin
  Result:=''; 

  for Counter:=1 to length(HexNr) do
  Result:=Result+HexCharToBin(HexNr[Counter]);
end;

function pow(base, power: integer): integer; 
var counter : integer; 
begin 
  Result:=1; 

  for counter:=1 to power do 
  Result:=Result*base; 
西格蒙end; 


function BinStrToInt(BinStr : string) : integer; 
var counter : integer; 
begin 
  if length(BinStr)>16 then 
  raise ERangeError.Create(#13+BinStr+#13+ 
  'is not within the valid range of a 16 bit binary.'+#13); 

  Result:=0; 

  for counter:=1 to length(BinStr) do 
  if BinStr[Counter]='1' then 
  Result:=Result+pow(2,length(BinStr)-counter); 
end; 

function DecodeSMS7Bit(PDU : string):string; 
var OctetStr : string; 
  OctetBin : string; 
  Charbin : string; 
  PrevOctet: string; 
  Counter : integer; 
  Counter2 : integer; 
begin 
  PrevOctet:=''; 
  Result:=''; 

  for Counter:=1 to length(PDU) do 
  begin 
  if length(PrevOctet)>=7 then { if 7 Bit overflow on previous } 
  begin 
  if BinStrToInt(PrevOctet)<>0 then 
  Result:=Result+Chr(BinStrToInt(PrevOctet)) 
  else Result:=Result+' '; 

  PrevOctet:=''; 
  end; 

  if Odd(Counter) then { only take two nibbles at a time } 
  begin 
  OctetStr:=Copy(PDU,Counter,2); 
  OctetBin:=HexToBin(OctetStr); 

  Charbin:=''; 
  for Counter2:=1 to length(PrevOctet) do 
  Charbin:=Charbin+PrevOctet[Counter2]; 


  for Counter2:=1 to 7-length(PrevOctet) do 
  Charbin:=OctetBin[8-Counter2+1]+Charbin; 

  if BinStrToInt(Charbin)<>0 then Result:=Result+Chr(BinStrToInt(CharBin)) 
  else Result:=Result+' '; 

  PrevOctet:=Copy(OctetBin,1,length(PrevOctet)+1); 
  end; 
  end; 
end; 

function ReverseStr(SourceStr : string) : string; 
var Counter : integer; 
begin 
  Result:=''; 

  for Counter:=1 to length(SourceStr) do 
  Result:=SourceStr[Counter]+Result; 
end;
16进制的就是STRING类型的!
要完成此效果需要两个步骤

第一步:把如下代码加入到伊通进修网站 <head> 区域中

<SCRIPT  LANGUAGE= "JavaScript ">
<!--  Begin
binary_numbers  =  new  Array( "0000 ",  "0001 ",  "0010 ",  "0011 ",  "0100 ",  "0101 ", 
"0110 ",  "0111 ",  "1000 ",  "1001 ",  "1010 ",  "1011 ",  "1100 ",  "1101 ",  "1110 ",  "1111 ");


function  toBinary(High,  Low)  {
var  hiHex  =  "ABCDEF ";
if  (Low  <  10  )  {
红外线报警器论文LowNib  =  Low;
}
else  {
LowNib  =  10  +  hiHex.indexOf(Low); 
}
if  (High    <  10  )  {
HighNib  =  High;
}
else  {
HighNib  =  10  +  hiHex.indexOf(High);
}
eight_bits  =  binary_numbers[HighNib]  +  "  "  +  binary_numbers[LowNib];
return  eight_bits;
}
function  Dec2Hex(Decimal)  {
var  hexChars  =  "0123456789ABCDEF ";
var  a  =  Decimal  %  16;
var  b  =  (Decimal  -  a)/16;
hex  =  " "  +  hexChars.charAt(b)  +  hexChars.charAt(a);
L  =  hexChars.charAt(a);
H  =  hexChars.charAt(b);
return  hex;
}
var  symbols  =  "  !\ "#$%& '()*+ '-./0123456789:; <=> ?@ ";
function  toAscii  ()    {
var  loAZ  =  "abcdefghijklmnopqrstuvwxyz ";
symbols+=  UpperCase();
symbols+=  "[\\]^_` ";
symbols+=  loAZ;
symbols+=  "{|}~ ";
var  loc;
loc  =  symbols.indexOf(document.asciiform.Input.value);
if  (loc  > -1)  { 
Ascii_Decimal  =  32  +  loc;
return  (32  +  loc);
      }
return(0);    //  If  not  in  range  32-126  return  ZERO
}
function  getAscii(some_value)  {
Dec.value  =  toAscii();
Hex.value  =  Dec2Hex(toAscii()); 
document.asciiform.binary.value  =  toBinary(H,  L); 
}
//    End  -->
</script>
dds信号发生器

第二步:把如下代码加入到 <body> 区域中

<center>
<form  name= "asciiform "  onsubmit= "return  false; ">
<table  border=1> <tr> <td>
<center>
                        输入一个字符
                        <input  size=1  name=Input  maxlength=1  onChange= "getAscii(this.value) ">
<p>
                            <input  type=button    value= "显示 "  onClick= "Dec.value=toAscii() ">
</center>
                    <p> 
                        <input  size=10  name=toDec  onFocus= "this.blur() ">
                        ASCII码十进制输出 <br>
                        <input  size=10  name=toHex  onFocus= "this.blur() ">
                        ASCII码十六进制输出 <br>
                        <input  size=10  name=binary  onFocus= "this.blur() ">
                        ASCII码二进制输出 
                </td>
</tr>
</table>
</form>

本文发布于:2024-09-21 18:55:56,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/421675.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:字符串   二进制   转换   字符   需要
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议