【发布时间】:2014-11-28 01:27:09
【问题描述】:
我有一个设备发送几个字节的状态信息,前 5 个字节是 40 个按钮的状态。每个位代表一个按钮,1 表示松开,0 表示按下。
因此,我正在使用这段代码进行结帐:
procedure TForm2.ServerUDPRead(AThread: TIdUDPListenerThread;
AData: array of Byte; ABinding: TIdSocketHandle);
var received: array [0..4] of string; a1, a2 integer;
bits: array [0..40] of boolean;
begin
for a1 := 0 to 4 do
Received[a1] := (ByteToBin(AData[a1]));
for a1 := 4 downto 0 do
begin
for a2 := 1 to 8 do
begin
if Copy(Received[a1], a2, 1) = '0' then bits[(4-a1)*8+(a2-1)]:=False else bits[(4-a1)*8+(a2-1)]:=True;
end;
end;
ByteToBin 是将字节转换为 8 位字符串的函数...
是否有另一种“更简单”、更简化且(我真正感兴趣的)更快的程序来实现我的需要,或者这种方式是否足够好?
我觉得它有点迟钝和肮脏......:/(虽然最终,它的意图......所以感兴趣主要是出于学习的角度)
【问题讨论】:
标签: delphi byte bit delphi-xe3