如何解决我需要将数字从255转换为256
| 我有一个文件,其中包含以255为基数存储的数字。因此,我需要将数字从255转换为256。基数是基数。 提示:基数255表示每个字节包含0到254的数字,而不是0到255的数字(如果该数字为\'normal \'(基数256))。 有任何低级例程(例如位旋转)可以做到这一点吗?解决方法
如果我理解正确,则需要以下内容(我使用Delphi 2009+ Exit语法):
function GetLongWord255(Source: LongWord; var Target: LongWord): Boolean;
var
B: Byte;
begin
B:= Byte(Source shr 24);
if B = 255 then Exit(False);
Target:= B;
B:= Byte(Source shr 16);
if B = 255 then Exit(False);
Target:= Target * 255 + B;
B:= Byte(Source shr 8);
if B = 255 then Exit(False);
Target:= Target * 255 + B;
B:= Byte(Source);
if B = 255 then Exit(False);
Target:= Target * 255 + B;
Exit(True);
end;
至于低级技巧,您可以使用
Target * 255 = Target shl 8 - Target;
尽管我不确定您可以从中受益。 :)
,您有4个字节,每个字节的基数为255,即。 \“几乎一个字节\”。
要计算总和,请执行以下操作:
sum = b1 + (b2 + (b3 + b4 * 255) * 255) * 255
您必须根据值的字节序来确定b1是最左还是最右字节。
您可以这样重写上面的内容,以使其更易于理解:
sum = b1
sum += b2 * 255
sum += b3 * 255 * 255
sum += b4 * 255 * 255 * 255
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。