怎么把一个字符串转换成16进制数据,然后再把16进制数转成字符串? unit BinHexTools;interfacefunction 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; //反转一个字符串涡流纺纱
implementationuses 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>