关于二进制和十六进制的问题(100分)

  • 主题发起人 主题发起人 fitsoo
  • 开始时间 开始时间
F

fitsoo

Unregistered / Unconfirmed
GUEST, unregistred user!
我用MSComm控件从串口接收缓冲区读入的数据,是不是二进制的?
应该用什么类型的变量(数据结构?)来存储读入的数据
怎样才能知道每一位数据,而不是每8位数据,
有没有什么函数把它转成十六进制数,比如11000--->18
请指教
 
function bintohex(value :string):string;
var
i,size:integer;
begin
result:=0;
size:=length(value);
for i:=size downto 0 do
begin
if copy(value,i,1)='1' then
begin
result:=result+(1 shl i);
end;
end;
result:=format('%0x',result);
end;

 
function bintohex(value :string):string
是不是integer还是byte,还是……
~~~~~~~~~
result:=0;
~~~~~~~~~~
 
从串口缓冲Buffer中读入的数据应该是二进制的,可以用Byte依次取出,
或者直接拷贝到Byte数组中。
如果要把某个字节显示出来,如00011010B显示成十六进制‘1A’,可以
自己写一个函数,如查表(‘0123456789ABCDEF’)将0001和1010分别当作
表中对应字符的索引,可以翻译成‘1’和‘A’;
如果当作数值运算,没有必要转换。

 
用format函数的%x参数可以把数字用16进制显示


i:integer;
label1:tlabel;
……
label1.caption:=format('%x',);
 
后退
顶部