有一个二进制文件,用16进制记事本打开,内容为:“66 2F 93 00 15 88 D2 02 42 2F 93 00 40 57 01”现要把每个“2F 93”后面的4个数值:“00 15 88 D2”和“00 40 57 01”,找出,并计算其对应的10进制数值,
java如何实现呢?另外,存放“00 15 88 D2”对应的10进制数值的是无符号长整型,在c语言中是__int64或 unsigned long long int,在java中对应何种类型呢?
谢谢!
java如何实现呢?另外,存放“00 15 88 D2”对应的10进制数值的是无符号长整型,在c语言中是__int64或 unsigned long long int,在java中对应何种类型呢?
谢谢!
但是我看到楼主好象只用了4个字节。 int32_t就够了。
但是,C写的文件Java不一定能转回来。
http://blog.csdn.net/afer198215/article/details/6656753
static void t7(){
byte[] bys = new byte[]{0x00,0x15,(byte) 0x88,(byte) 0xd2};
System.out.println(Utility.byte2Int(bys));
}
while (true){
while (dis.readByte()!=0x2F);
if (dis.readByte()==(byte)0x93){
long number = dis.readInt() & 0xFFFFFFFFL;
System.out.println("找到一个数:" + number);
}
}
FileInpuetStream fis = new FileInputStream(your_file);
int c;
while ((c=fis.read()) != -1) {
if (c == 0x2a) {
c = fis.read();
if (c == -1) {break;}
if (c == 0x93) {
byte[] b = new byte[4];
c = fis.read(b);
if (c == -1) {break;}
long l = 0;
for (int i=0; i<b.length; i++) {
l = (l<<4) | b[i]; //不知道存储的是从高位到低位还是低位到高位,LZ自己调整吧
}
System.out.println(l);
}
}
}
int c;
while ((c=fis.read()) != -1) {
if (c == 0x2F) {
c = fis.read();
if (c == -1) {break;}
if (c == 0x93) {
byte[] b = new byte[4];
c = fis.read(b);
if (c == -1) {break;}
long l = 0;
for (int i=0; i<b.length; i++) {
l = (l<<4) | b[i]; //不知道存储的是从高位到低位还是低位到高位,LZ自己调整吧
}
System.out.println(l);
}
}
}