js-struct
文件大小: unknow
源码售价: 5 个金币 积分规则     积分充值
资源说明:Utility to assist in parsing c-style structs from an ArrayBuffer
jsStruct
=======================

Typed Arrays have made parsing binary files much more reasonable in Javascript, but we still lack the simplicity
of c-style struct reading, where you can simply point a struct at a memory offset and read it. This utility
attempts to provide the same convenience in Javascript, in a reasonably efficient manner.

Better documentation should be forthcoming. Library currently supports reading only, will probably add write in the future.

Sample
-------------

    // buffer may also come from an XHR request with responseType = "arraybuffer"
    var buffer = new ArrayBuffer(128); // Assume the buffer is populated with sensible binary data
    
    // Define the struct layout
    var SimpleStruct = Struct.create(
        Struct.int8("myChar"),
        Struct.int16("myShort"),
        Struct.int32("myInt"),
        Struct.float32("myFloat")
    );
    
    var ComplexStruct = Struct.create(
        Struct.struct("myStruct", SimpleStruct), // Structs can be nested
        Struct.string("myString", 4),
        Struct.array("myArray", Struct.int8(), 4), // Primitives or other structs can be read as fixed-length arrays
        Struct.array("myStructArray", SimpleStruct, 2),
        { 
            // The last argument passed to Struct.create can be additional properties for the object
            // These properties will be available on every instance of this struct that is created
            myFunction: {
                value: function() {
                    console.log("myFunction has been called");
                }
            }
        }
    );
    
    // readStructs accepts the following arguments:
    //  arrayBuffer - the ArrayBuffer to read from
    //  offset - the byte offset into the buffer where reading should start
    //  count - the number of structs to read. Structs are assumed to be tightly packed
    // returns an array of structs
    var a = SimpleStruct.readStructs(buffer, 0, 2); // Returns an array of 2 simpleStructs
    var b = ComplexStruct.readStructs(buffer, 32, 1); // Returns an array of 1 complexStruct
    
    // myFunction will be available on every instance of a ComplexStruct
    b[0].myFunction();
    
    // readStructs can also accept a callback, which will be called with the parsed structure and offset of that 
    // structure within the stream as they are parsed.
    SimpleStruct.readStructs(buffer, 0, 2, function(newStruct, offset) {
        console.log("Parsed " + newStruct + " at offset " + offset);
    });

本源码包内暂不包含可直接显示的源代码文件,请下载源码包。