有没办法定义一个8字节的integer? ( 积分: 100 )

  • 主题发起人 主题发起人 jxgxy
  • 开始时间 开始时间
J

jxgxy

Unregistered / Unconfirmed
GUEST, unregistred user!
有没办法定义一个8字节的integer?

因为我要读取文件中的内容,他是8字节一段.

比如读 00 D6 11 7E 03 00 00 00

读出来后要求是15000000000也就是150亿,用这个8字节的integer来保存.
 
int64就是8字节的
 
type
T8Byte = array[0..7] of byte;

可以定义任意字节长度的类型
 
要求读出来的16进制内容高低位自动转换,并转换为整数,有办法不?
 
根据你给出的数据的排列顺序,可以写出以下代码
const
A : array[0..7] of Byte = ($00,$D6,$11,$7E,$03,$00,$00,$00);//读出的数据
var
i : Integer;
v : Int64;
l : Int64;
begin
v := 0;
for i := 0 to 7 do
begin
l := A;
l := l shl (i * 8);
v := v + l;
end;
//v就是返回的int64值
end;
 
因为是个2进制文件,

如何定义一个变量,读取 00 d6 11 7e 03 00 00 00 出来就是150亿

4字节的用integer就可以,
MyStream.Read(ExperienceBaseNum,4);

可是8字节就不知道怎么办了.
 
感觉定义多少个字节不是问题的本质.关键是如何存放大数字,比如以前的1000!(大数的阶乘)问题,一般是通过数组来存放的.

有兴趣的查查如何求大数的阶乘问题
150亿?如果是1500000000000000亿或再大的,你8字节的integer就够用?
 
是 15000000000

integer不够,所以求比integer大一倍的数据类型.
 
虽然int64在内存中是低位在前高位在后,但你这根本是全倒序,不写个函数转换,是不可能直接读出来的.
 
我用int64不知道怎么搞的全乱套了,唉,算不了搞这玩意了,散分.
 
后退
顶部