16进制的数相加怎么运算? 急(10分)

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

carrie4002

Unregistered / Unconfirmed
GUEST, unregistred user!
如果,sbuf:array[1..4] of byte;
sbuf[1]:=byte($2F);sbuf[3]:=byte($4B);
sbuf[4]:=byte($6N);且sbuf[2]是随n的变化而变化的。
那,当n:=0 to 5时,原本sbuf[2]:=byte($C4),现在则:
sbuf[2]的值增加2*n,该如何表达呢?
{sbuf[2]:=byte($C4+2*n),为何不运算呢?}
 
??
sbuf[4]:=byte($6N);
这个就不对吧.

还有,楼主说的不运算,是什么情况?
不明白你的意思呀
 
to guanweiw:
谢谢.
sbuf里放的是通讯命令字。其中唯有sbuf[2]是变化的,它存放的
是通道变量,会随n的变化而变化。所以,用循环来实现。具体的表达
就是:sbuf[2]:=byte($C4)再增加2*n。
如:原来的通道是通道4的话,在n=0时,通道为4;当n=1时,通道应该
为6。该如何表达该计算式呢?
 
其实有个简单的方法,直接用运算符计算不就行了!!
 
哪位前辈了解一个16进制的数与一个10进制数的计算方法,
请告知!谢!!!!
 
关注一下。
 
sbuf[2]:=byte($C4+2*n)该表达式不计算,结果为无穷小。
我想,应该是表达式的错误。
请问,哪位前辈熟悉这个,请指点!
 
将10进制数转16进制数:
先转成2进制数,再转成16进制数
将16进制数转10进制数:
先转成2进制数,再转成10进制数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
1 2 3 4 5 6 7 8 9 A B C D E F 10
 
谢谢。我需要的是代码。
 
sbuf[2]:= $C4+2*n 不可以吗
 
16进制转10进制 : strtoint('$'+str);
其中str为16进制数
 
TO yanghai0437
谢谢。sbuf[2]:= $C4+2*n语法上通过,但实际上并不运行
也不计算。断点追终的结果是这样。
TO lsf520,:
谢谢。我现在需要的是一个10进制数2*n与一个16进制数相加,
最后成为一个16进制数。
 
高手都去哪里了?
 
其实数值倒是一样,里面计算都是一样的,只是显示不一而已,显示再转换一下就可以了。
uses
SysUtils,Dialogs;
var
sbuf: array[1..4] of byte;
n: byte;
begin
{ TODO -oUser -cConsole Main : Insert code here }
sbuf[1]:=byte($2F);
sbuf[1]:=byte($0);
sbuf[3]:=byte($4B);
sbuf[4]:=byte($6);
for n := 0 to 5 do
sbuf[2]:=byte($C4+2*n);
ShowMessage(IntToHex(sbuf[2],2));
end.
 
strtoint(copy(16进制数,length(16进制数)-1,1))+2*n
不过还要判断尾数为A、B、C、D、E、F的情况
 
TO zojd1:
谢谢你。我的sbuf[2]:=byte($C4+2*n),其中:
$C4是某个通道,现在需要根据n值来自动移动到下一个
通道....直到最后一个通道,以进行顺序扫描。
语法原本没没错,可调试时才发现byte($C4+2*n)这个
算式似乎没运算过,下位机找不到该通道。
我对这些数值的运算没经验,所以找不到原因在哪里?
to lsf520:
我需要的是一个10进制数2*n 与一个16进制数$C4相加,
你的代码是把10进制转化成16进制。???
 
sbuf[2]:=byte($C4+2*n),将你的sbuf[2]改成sbuf[3]就好。
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部