67 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
/*
 | 
						|
文件名:BlobExClass.nut
 | 
						|
路径:BaseClass/BaseTool/BlobExClass.nut
 | 
						|
创建日期:2024-05-07	17:34
 | 
						|
文件用途:拓展的Blob类
 | 
						|
*/
 | 
						|
class blobex extends blob {
 | 
						|
 | 
						|
    //-----------------Metamethods--------------------//
 | 
						|
    function _typeof() {
 | 
						|
        return "blobex";
 | 
						|
    }
 | 
						|
    //-----------------Metamethods--------------------//
 | 
						|
 | 
						|
    constructor(arg) {
 | 
						|
        //通过blob构造
 | 
						|
        if (typeof arg == "blob") {
 | 
						|
            base.constructor(arg.len());
 | 
						|
            writeblob(arg);
 | 
						|
        }
 | 
						|
        //直接构造
 | 
						|
        else {
 | 
						|
            base.constructor(arg);
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    function writeblob(B) {
 | 
						|
        base.writeblob(B);
 | 
						|
        seek(0);
 | 
						|
    }
 | 
						|
 | 
						|
    function GetUShort() {
 | 
						|
        return readn('w');
 | 
						|
    }
 | 
						|
 | 
						|
    function GetShort() {
 | 
						|
        return readn('s');
 | 
						|
    }
 | 
						|
 | 
						|
    function charPtrToInt(arr) {
 | 
						|
        local value = ((arr[0]) << 0) |
 | 
						|
            ((arr[1]) << 8) |
 | 
						|
            ((arr[2]) << 16) |
 | 
						|
            ((arr[3]) << 24);
 | 
						|
        return value;
 | 
						|
    }
 | 
						|
 | 
						|
    function GetInt() {
 | 
						|
        local CurTPos = tell();
 | 
						|
        local Ret = charPtrToInt([this[CurTPos], this[CurTPos + 1], this[CurTPos + 2], this[CurTPos + 3]]);
 | 
						|
        seek(4, 'c');
 | 
						|
        return Ret;
 | 
						|
    }
 | 
						|
 | 
						|
    function Get256() {
 | 
						|
        local Buf = readn('c');
 | 
						|
        return (256.0 + Buf.tofloat()) % 256.0;
 | 
						|
    }
 | 
						|
 | 
						|
    function GetFloat() {
 | 
						|
        return readn('f');
 | 
						|
    }
 | 
						|
 | 
						|
    function GetString(count) {
 | 
						|
        return stream_myreadstring(count);
 | 
						|
    }
 | 
						|
} |