这是很早以前,编写条码打印程序时写的一个十进制转十六进制的程序了,
你看看能用吗?它是以字符串的形式转换的。
回头看看计算机原理,就会发现这不难的。
Function TFrmTMprint.strtohexd( var str:string):String;
var
i:integer;
ss:string;
begin
ss:='';
if (length(str) mod 4)<>0 then
begin
for i:=1 to (4-(length(str) mod 4)) do
str:='0'+str;
end;
if ((length(str) div 4) mod 2)<>0 then
str:='0000'+str;
for i:=0 to (length(str) div 4) do
begin
//copy(str,1*4,1)*8+
IF copy(str,i*4,4)='0000' then
ss:=ss+'0';
IF copy(str,i*4,4)='0001' then
ss:=ss+'1';
IF copy(str,i*4,4)='0010' then
ss:=ss+'2';
IF copy(str,i*4,4)='0011' then
ss:=ss+'3';
IF copy(str,i*4,4)='0100' then
ss:=ss+'4';
IF copy(str,i*4,4)='0101' then
ss:=ss+'5';
IF copy(str,i*4,4)='0110' then
ss:=ss+'6';
IF copy(str,i*4,4)='0111' then
ss:=ss+'7';
IF copy(str,i*4,4)='1000' then
ss:=ss+'8';
IF copy(str,i*4,4)='1001' then
ss:=ss+'9';
IF copy(str,i*4,4)='1010' then
ss:=ss+'A';
IF copy(str,i*4,4)='1011' then
ss:=ss+'B';
IF copy(str,i*4,4)='1100' then
ss:=ss+'C';
IF copy(str,i*4,4)='1101' then
ss:=ss+'D';
IF copy(str,i*4,4)='1110' then
ss:=ss+'E';
IF copy(str,i*4,4)='1111' then
ss:=ss+'F';
end;
strtohexd:='80'+inttohex(((length(str) div 4) div 2),2)+ ss;
end;