📄 hessian2input.as
字号:
case 0xac: case 0xad: case 0xae: case 0xaf: case 0xb0: case 0xb1: case 0xb2: case 0xb3: case 0xb4: case 0xb5: case 0xb6: case 0xb7: case 0xb8: case 0xb9: case 0xba: case 0xbb: case 0xbc: case 0xbd: case 0xbe: case 0xbf: return tag != Hessian2Constants.INT_ZERO; // INT_BYTE = 0 case 0xc8: return read() != 0; // INT_BYTE != 0 case 0xc0: case 0xc1: case 0xc2: case 0xc3: case 0xc4: case 0xc5: case 0xc6: case 0xc7: case 0xc9: case 0xca: case 0xcb: case 0xcc: case 0xcd: case 0xce: case 0xcf: read(); return true; // INT_SHORT = 0 case 0xd4: return (256 * read() + read()) != 0; // INT_SHORT != 0 case 0xd0: case 0xd1: case 0xd2: case 0xd3: case 0xd5: case 0xd6: case 0xd7: read(); read(); return true; case 'I'.charCodeAt(): return parseInteger() != 0; case 0xd8: case 0xd9: case 0xda: case 0xdb: case 0xdc: case 0xdd: case 0xde: case 0xdf: case 0xe0: case 0xe1: case 0xe2: case 0xe3: case 0xe4: case 0xe5: case 0xe6: case 0xe7: case 0xe8: case 0xe9: case 0xea: case 0xeb: case 0xec: case 0xed: case 0xee: case 0xef: return tag != Hessian2Constants.LONG_ZERO; // LONG_BYTE = 0 case 0xf8: return read() != 0; // LONG_BYTE != 0 case 0xf0: case 0xf1: case 0xf2: case 0xf3: case 0xf4: case 0xf5: case 0xf6: case 0xf7: case 0xf9: case 0xfa: case 0xfb: case 0xfc: case 0xfd: case 0xfe: case 0xff: read(); return true; // INT_SHORT = 0 case 0x3c: return (256 * read() + read()) != 0; // INT_SHORT != 0 case 0x38: case 0x39: case 0x3a: case 0x3b: case 0x3d: case 0x3e: case 0x3f: read(); read(); return true; case Hessian2Constants.LONG_INT: return (0x1000000 * read() + 0x10000 * read() + 0x100 * read() + read()) != 0; case 'L'.charCodeAt(): return parseLong() != 0; case Hessian2Constants.DOUBLE_ZERO: return false; case Hessian2Constants.DOUBLE_ONE: return true; case Hessian2Constants.DOUBLE_BYTE: return read() != 0; case Hessian2Constants.DOUBLE_SHORT: return (0x100 * read() + read()) != 0; case Hessian2Constants.DOUBLE_FLOAT: { var f:int = parseInteger(); return Float.intBitsToFloat(f) != 0; } case 'D'.charCodeAt(): return parseDouble() != 0.0; case 'N'.charCodeAt(): return false; default: throw expect("boolean", tag); } } /** * Reads an integer. * * <p> * <pre> * I b32 b24 b16 b8 * </pre> * </p> * * @return The integer value read. */ public override function readInt():int { var tag:int = read(); switch (tag) { case 'N'.charCodeAt(): return 0; case 'F'.charCodeAt(): return 0; case 'T'.charCodeAt(): return 1; // direct integer case 0x80: case 0x81: case 0x82: case 0x83: case 0x84: case 0x85: case 0x86: case 0x87: case 0x88: case 0x89: case 0x8a: case 0x8b: case 0x8c: case 0x8d: case 0x8e: case 0x8f: case 0x90: case 0x91: case 0x92: case 0x93: case 0x94: case 0x95: case 0x96: case 0x97: case 0x98: case 0x99: case 0x9a: case 0x9b: case 0x9c: case 0x9d: case 0x9e: case 0x9f: case 0xa0: case 0xa1: case 0xa2: case 0xa3: case 0xa4: case 0xa5: case 0xa6: case 0xa7: case 0xa8: case 0xa9: case 0xaa: case 0xab: case 0xac: case 0xad: case 0xae: case 0xaf: case 0xb0: case 0xb1: case 0xb2: case 0xb3: case 0xb4: case 0xb5: case 0xb6: case 0xb7: case 0xb8: case 0xb9: case 0xba: case 0xbb: case 0xbc: case 0xbd: case 0xbe: case 0xbf: return tag - Hessian2Constants.INT_ZERO; /* byte int */ case 0xc0: case 0xc1: case 0xc2: case 0xc3: case 0xc4: case 0xc5: case 0xc6: case 0xc7: case 0xc8: case 0xc9: case 0xca: case 0xcb: case 0xcc: case 0xcd: case 0xce: case 0xcf: return ((tag - Hessian2Constants.INT_BYTE_ZERO) << 8) + read(); /* short int */ case 0xd0: case 0xd1: case 0xd2: case 0xd3: case 0xd4: case 0xd5: case 0xd6: case 0xd7: return ((tag - Hessian2Constants.INT_SHORT_ZERO) << 16) + 256 * read() + read(); case 'I'.charCodeAt(): case Hessian2Constants.LONG_INT: return ((read() << 24) + (read() << 16) + (read() << 8) + read()); // direct long case 0xd8: case 0xd9: case 0xda: case 0xdb: case 0xdc: case 0xdd: case 0xde: case 0xdf: case 0xe0: case 0xe1: case 0xe2: case 0xe3: case 0xe4: case 0xe5: case 0xe6: case 0xe7: case 0xe8: case 0xe9: case 0xea: case 0xeb: case 0xec: case 0xed: case 0xee: case 0xef: return tag - Hessian2Constants.LONG_ZERO; /* byte long */ case 0xf0: case 0xf1: case 0xf2: case 0xf3: case 0xf4: case 0xf5: case 0xf6: case 0xf7: case 0xf8: case 0xf9: case 0xfa: case 0xfb: case 0xfc: case 0xfd: case 0xfe: case 0xff: return ((tag - Hessian2Constants.LONG_BYTE_ZERO) << 8) + read(); /* short long */ case 0x38: case 0x39: case 0x3a: case 0x3b: case 0x3c: case 0x3d: case 0x3e: case 0x3f: return ((tag - Hessian2Constants.LONG_SHORT_ZERO) << 16) + 256 * read() + read(); case 'L'.charCodeAt(): return int(parseLong()); case Hessian2Constants.DOUBLE_ZERO: return 0; case Hessian2Constants.DOUBLE_ONE: return 1; //case LONG_BYTE: case Hessian2Constants.DOUBLE_BYTE: return _offset < _length ? _buffer[_offset++] : read(); //case INT_SHORT: //case LONG_SHORT: case Hessian2Constants.DOUBLE_SHORT: return int(256 * read() + read()); case Hessian2Constants.DOUBLE_FLOAT: { var f:int = parseInteger(); return int(Float.intBitsToFloat(f)); } case 'D'.charCodeAt(): return int(parseDouble()); default: throw expect("int", tag); } } /** * Reads a long. * * <p> * <pre> * L b64 b56 b48 b40 b32 b24 b16 b8 * </pre> * </p> * * @return The long value read as a Number. */ public override function readLong():Number { var tag:int = read(); switch (tag) { case 'N'.charCodeAt(): return 0; case 'F'.charCodeAt(): return 0; case 'T'.charCodeAt(): return 1; // direct integer case 0x80: case 0x81: case 0x82: case 0x83: case 0x84: case 0x85: case 0x86: case 0x87: case 0x88: case 0x89: case 0x8a: case 0x8b: case 0x8c: case 0x8d: case 0x8e: case 0x8f: case 0x90: case 0x91: case 0x92: case 0x93: case 0x94: case 0x95: case 0x96: case 0x97: case 0x98: case 0x99: case 0x9a: case 0x9b: case 0x9c: case 0x9d: case 0x9e: case 0x9f: case 0xa0: case 0xa1: case 0xa2: case 0xa3: case 0xa4: case 0xa5: case 0xa6: case 0xa7: case 0xa8: case 0xa9: case 0xaa: case 0xab: case 0xac: case 0xad: case 0xae: case 0xaf: case 0xb0: case 0xb1: case 0xb2: case 0xb3: case 0xb4: case 0xb5: case 0xb6: case 0xb7: case 0xb8: case 0xb9: case 0xba: case 0xbb: case 0xbc: case 0xbd: case 0xbe: case 0xbf: return tag - Hessian2Constants.INT_ZERO; /* byte int */ case 0xc0: case 0xc1: case 0xc2: case 0xc3: case 0xc4: case 0xc5: case 0xc6: case 0xc7: case 0xc8: case 0xc9: case 0xca: case 0xcb: case 0xcc: case 0xcd: case 0xce: case 0xcf: return ((tag - Hessian2Constants.INT_BYTE_ZERO) << 8) + read(); /* short int */ case 0xd0: case 0xd1: case 0xd2: case 0xd3: case 0xd4: case 0xd5: case 0xd6: case 0xd7: return ((tag - Hessian2Constants.INT_SHORT_ZERO) << 16) + 256 * read() + read(); //case LONG_BYTE: case Hessian2Constants.DOUBLE_BYTE: return /* (byte) */ (_offset < _length ? _buffer[_offset++] : read()) & 0xFF; //case INT_SHORT: //case LONG_SHORT: case Hessian2Constants.DOUBLE_SHORT: return /* (short) */ (256 * read() + read()) & 0xFFFF; case 'I'.charCodeAt(): case Hessian2Constants.LONG_INT: return parseInteger(); // direct long case 0xd8: case 0xd9: case 0xda: case 0xdb: case 0xdc: case 0xdd: case 0xde: case 0xdf: case 0xe0: case 0xe1: case 0xe2: case 0xe3: case 0xe4: case 0xe5: case 0xe6: case 0xe7: case 0xe8: case 0xe9: case 0xea: case 0xeb: case 0xec: case 0xed: case 0xee: case 0xef: return tag - Hessian2Constants.LONG_ZERO; /* byte long */ case 0xf0: case 0xf1: case 0xf2: case 0xf3: case 0xf4: case 0xf5: case 0xf6: case 0xf7: case 0xf8: case 0xf9: case 0xfa: case 0xfb: case 0xfc: case 0xfd: case 0xfe: case 0xff: return ((tag - Hessian2Constants.LONG_BYTE_ZERO) << 8) + read(); /* short long */ case 0x38: case 0x39: case 0x3a: case 0x3b: case 0x3c: case 0x3d: case 0x3e: case 0x3f: return ((tag - Hessian2Constants.LONG_SHORT_ZERO) << 16) + 256 * read() + read(); case 'L'.charCodeAt(): return parseLong(); case Hessian2Constants.DOUBLE_ZERO: return 0; case Hessian2Constants.DOUBLE_ONE: return 1; case Hessian2Constants.DOUBLE_FLOAT: { var f:int = parseInteger(); return Float.intBitsToFloat(f); } case 'D'.charCodeAt(): return parseDouble(); default: throw expect("long", tag); } } /** * Reads a double. * * <p> * <pre> * D b64 b56 b48 b40 b32 b24 b16 b8 * </pre> * </p> * * @return The double value read as a Number. */ public override function readDouble():Number { var tag:int = read(); switch (tag) { case 'N'.charCodeAt(): return 0; case 'F'.charCodeAt(): return 0; case 'T'.charCodeAt(): return 1; // direct integer case 0x80: case 0x81: case 0x82: case 0x83: case 0x84: case 0x85: case 0x86: case 0x87: case 0x88: case 0x89: case 0x8a: case 0x8b: case 0x8c: case 0x8d: case 0x8e: case 0x8f: case 0x90: case 0x91: case 0x92: case 0x93: case 0x94: case 0x95: case 0x96: case 0x97: case 0x98: case 0x99: case 0x9a: case 0x9b: case 0x9c: case 0x9d: case 0x9e: case 0x9f: case 0xa0: case 0xa1: case 0xa2: case 0xa3: case 0xa4: case 0xa5: case 0xa6: case 0xa7: case 0xa8: case 0xa9: case 0xaa: case 0xab: case 0xac: case 0xad: case 0xae: case 0xaf: case 0xb0: case 0xb1: case 0xb2: case 0xb3: case 0xb4: case 0xb5: case 0xb6: case 0xb7: case 0xb8: case 0xb9: case 0xba: case 0xbb: case 0xbc: case 0xbd: case 0xbe: case 0xbf: return tag - 0x90; /* byte int */ case 0xc0: case 0xc1: case 0xc2: case 0xc3: case 0xc4: case 0xc5: case 0xc6: case 0xc7: case 0xc8: case 0xc9: case 0xca: case 0xcb: case 0xcc: case 0xcd: case 0xce: case 0xcf: return ((tag - Hessian2Constants.INT_BYTE_ZERO) << 8) + read(); /* short int */ case 0xd0: case 0xd1: case 0xd2: case 0xd3: case 0xd4: case 0xd5: case 0xd6: case 0xd7: return ((tag - Hessian2Constants.INT_SHORT_ZERO) << 16) + 256 * read() + read(); case 'I'.charCodeAt(): case Hessian2Constants.LONG_INT: return parseInteger(); // direct long case 0xd8: case 0xd9: case 0xda: case 0xdb: case 0xdc: case 0xdd: case 0xde: case 0xdf: case 0xe0: case 0xe1: case 0xe2: case 0xe3: case 0xe4: case 0xe5: case 0xe6: case 0xe7: case 0xe8: case 0xe9: case 0xea: case 0xeb: case 0xec: case 0xed: case 0xee: case 0xef: return tag - Hessian2Constants.LONG_ZERO; /* byte long */ case 0xf0: case 0xf1: case 0xf2: case 0xf3: case 0xf4: case 0xf5: case 0xf6: case 0xf7: case 0xf8: case 0xf9: case 0xfa: case 0xfb: case 0xfc: case 0xfd: case 0xfe: case 0xff: return ((tag - Hessian2Constants.LONG_BYTE_ZERO) << 8) + read(); /* short long */ case 0x38: case 0x39: case 0x3a: case 0x3b: case 0x3c: case 0x3d: case 0x3e: case 0x3f: return ((tag - Hessian2Constants.LONG_SHORT_ZERO) << 16) + 256 * read() + read(); case 'L'.charCodeAt(): return /* (double) */ parseLong(); case Hessian2Constants.DOUBLE_ZERO: return 0; case Hessian2Constants.DOUBLE_ONE: return 1; case Hessian2Constants.DOUBLE_BYTE: return /* (byte) */ (_offset < _length ? _buffer[_offset++] : read()) & 0xFF; case Hessian2Constants.DOUBLE_SHORT: return /* (short) */(256 * read() + read()) & 0xFFFF; case Hessian2Constants.DOUBLE_FLOAT: { var f:int = parseInteger(); return Float.intBitsToFloat(f); } case 'D'.charCodeAt(): return parseDouble(); default: throw expect("double", tag); } } /** * Reads a date. * * <p> * <pre> * T b64 b56 b48 b40 b32 b24 b16 b8 * </pre> * </p> * * @return The date value read as a Number (milliseconds since the epoch). */ public override function readUTCDate():Number { var tag:int = read(); if (tag != 'd'.charCodeAt()) throw error("expected date"); return parseLong(); } /** * Reads a character from the stream. * * @return The UTF8 character value read as an integer. */ public function readChar():int { if (_chunkLength > 0) { _chunkLength--; if (_chunkLength == 0 && _isLastChunk) _chunkLength = END_OF_DATA; var ch:int = parseUTF8Char(); return ch; } else if (_chunkLength == END_OF_DATA) { _chunkLength = 0; return -1; } var tag:int = read(); switch (tag) { case 'N'.charCodeAt(): return -1; case 'S'.charCodeAt(): case 's'.charCodeAt(): case 'X'.charCodeAt(): case 'x'.charCodeAt(): _isLastChunk = tag == 'S'.charCodeAt() || tag == 'X'.charCodeAt(); _chunkLength = (read() << 8) + read(); _chunkLength--; var value:int = parseUTF8Char(); // special code so successive read byte won't // be read as a single object. if (_chunkLength == 0 && _isLastChunk) _chunkLength = END_OF_DATA; return value; default: throw new IOError("expected 'S' at " + String.fromCharCode(tag)); } } /** * Reads a string. * * <p> * <pre> * S b16 b8 string value * </pre> * </p> * * @return The string value read. */ public override function readString():String { var tag:int = read(); switch (tag) { case 'N'.charCodeAt(): return null; case 'I'.charCodeAt(): return parseInteger().toString(); case 'L'.charCodeAt(): return parseLong().toString(); case 'D'.charCodeAt(): return parseDouble().toString(); case 'S'.charCodeAt(): case 's'.charCodeAt():
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -