字节按位判断问题(50分)

  • 主题发起人 主题发起人 cpjin
  • 开始时间 开始时间
C

cpjin

Unregistered / Unconfirmed
GUEST, unregistred user!
DELPHI如何判断从串口接受的一个字节的某一位是0还是1
一个字节8位: D7 D6 D5 D4 D3 D2 D1 D0
 
如何屏蔽其中几位??
 
操作符shl shr and or

var
b: byte;
begin
b := 6;
if b and $02 = $02 then
ShowMessage('第二位是1')
else
ShowMessage('第二位是0');
end;
 
谢谢,字节转换成CHR类型的函数是什么啊??
 
Chr(aByte) or typecast Char(aByte)
 
把字节字符转化成二进制串不就可以判断0或1了?
屏蔽其中n位,一般用位运算AND(与):
例如 $D7 AND 1的结果是屏蔽了高七位;$D7 AND 3屏蔽了高六位;等等
可以先把一个字节的两位十六进制数转化成十进制数,相与运算的屏蔽位也用十进制数,就可以在Delphi环境下进行处理。
一点参考:
http://www.delphibbs.com/keylife/iblog_show.asp?xid=4707
自己搞搞吧,我要上班了。
 
tmp:=ord(s(1)) and $01
if tmp=#01 则第0位为1
tmp=$00 则第0位为0
同样第1--7位分别与
$02,$04,$08,$10,$20,$40,$80做与操作
 
前些日子也遇到过这个问题,给你一个函数:
function bytetobinstr(b:byte) :string;
var
m :byte;
begin
result :='';
repeat
m :=b mod 2;
result :=inttostr(m)+result;
b :=b div 2;
until b<2;
result :=inttostr(b)+result;
if lenth(result)<8 then
for m :=1 to (8-length(result)) do
result :='0'+result;
end;
 
后退
顶部