⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dostimeverify.java

📁 kaffe Java 解释器语言,源码,Java的子集系统,开放源代码
💻 JAVA
字号:
// Submitted by Moses DeJong <dejong@cs.umn.edu>import java.io.*;import java.util.*;import java.util.zip.*;public class DosTimeVerify {    public static void main(String[] argv) throws Exception {	TimeZone.setDefault(TimeZone.getTimeZone("GMT"));	ByteArrayOutputStream baos = new ByteArrayOutputStream();	ZipOutputStream zout = new ZipOutputStream(baos);	boolean compressed = false;	byte[] bytes = {1, 2};	addEntry("data", bytes, zout, compressed);	zout.close();	// Get the bytes written to the stream as an array	byte[] data = baos.toByteArray();	// Get the dosTime from offset 10	byte[] timedate = new byte[4];	timedate[0] = data[10];	timedate[1] = data[11];	timedate[2] = data[12];	timedate[3] = data[13];	// u4 time / date encoded in dosTime	// 1/1/1984 12:30 and 30 seconds ( this is 0x66ddd29670L converted to dos time)	byte[] expected_timedate = {-49, 99, 33, 8};	boolean ok = true;	for (int i=0; i < timedate.length; i++) {	    if (timedate[i] != expected_timedate[i]) {		System.out.println("timedate[" + i + "] is " +				   timedate[i] + " expected " +				   expected_timedate[i]);		ok = false;	    }	}	if (ok) {	    System.out.println("OK");	} else {	    int int_timedate = get32(timedate, 0);	    int int_expected_timedate = get32(expected_timedate, 0);	    // Double cleck our assumed value	    if (0x82163cf != int_expected_timedate) {		System.out.println("int_expected_timedate is 0x" +				   Integer.toHexString(int_expected_timedate) +				   " not the expected result of 0x82163cf");	    }	    if (int_timedate != int_expected_timedate) {		System.out.println("int_timedate is 0x" + Integer.toHexString(int_timedate));		System.out.println("expected     is 0x" + Integer.toHexString(int_expected_timedate));		System.out.println("---BINARY-SPLIT-INTO-HEX-DIGITS----------------------");		String binary;		System.out.print("int_timedate  ");	    		binary = Integer.toBinaryString(int_timedate);		for (int i=0; i < binary.length() ; i+=4) {		    System.out.print(binary.substring(i, i+4));		    System.out.print(' ');		}		System.out.println();				System.out.print("expected      ");		binary = Integer.toBinaryString(int_expected_timedate);		for (int i=0; i < binary.length() ; i+=4) {		    System.out.print(binary.substring(i, i+4));		    System.out.print(' ');		}		System.out.println();	    } else {		System.out.println("int_timedate == int_expected_timedate");	    }	}    }    public static void addEntry(String name, byte[] bytes, ZipOutputStream zout, boolean compressed)	throws Exception    {	ZipEntry ze = new ZipEntry(name);	if (compressed) {	    ze.setMethod(ZipEntry.DEFLATED);	} else {	    ze.setMethod(ZipEntry.STORED);	}	ze.setSize( bytes.length );	ze.setCrc( 0 );	// 1/1/1984 12:30 and 30 seconds	ze.setTime( 0x66ddd29670L );	zout.putNextEntry(ze);	zout.write(bytes);		CRC32 crc = new CRC32();	crc.update(bytes);		ze.setCrc( crc.getValue() );	zout.closeEntry();    }    public static int get32(byte[] buf, int base) {	int val = (int)buf[base] & 0xFF;	val |= ((int)buf[base+1] & 0xFF) << 8;	val |= ((int)buf[base+2] & 0xFF) << 16;	val |= ((int)buf[base+3] & 0xFF) << 24;	return (val);    }}/* Expected Output:OK*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -