| | 1 | #include <tads.h> |
| | 2 | #include <bytearr.h> |
| | 3 | |
| | 4 | main(args) |
| | 5 | { |
| | 6 | local b; |
| | 7 | |
| | 8 | "--- integer writing ---\n"; |
| | 9 | b = new ByteArray(200); |
| | 10 | b.fillValue(0, 1, 256); |
| | 11 | b.writeInt(001, FmtInt8, 200 /* 0xC8 */); |
| | 12 | b.writeInt(011, FmtInt8, -75 /* 0xB5 */); |
| | 13 | b.writeInt(021, FmtInt16LE, 41000 /* 0xA028 */); |
| | 14 | b.writeInt(031, FmtInt16LE, -21000 /* 0xADF8 */); |
| | 15 | b.writeInt(041, FmtInt16BE, 42000 /* 0xA410 */); |
| | 16 | b.writeInt(051, FmtInt16BE, -22000 /* 0xAA10 */); |
| | 17 | b.writeInt(061, FmtInt32LE, 600000 /* 0x000927C0 */); |
| | 18 | b.writeInt(071, FmtInt32LE, -600000 /* 0xFFF6D840 */); |
| | 19 | b.writeInt(0101, FmtInt32BE, 700000 /* 0x000AAE60 */); |
| | 20 | b.writeInt(0111, FmtInt32BE, -700000 /* 0xFFF551A0 */); |
| | 21 | |
| | 22 | for (local i = 1 ; i <= b.length() ; i += 8) |
| | 23 | { |
| | 24 | "<<fmtX(i, 8, 4)>>: "; |
| | 25 | for (local j = i ; j < i + 8 ; ++j) |
| | 26 | "<<fmtX(b[j], 16, 2)>> "; |
| | 27 | "\n"; |
| | 28 | } |
| | 29 | |
| | 30 | "\b--- integer reading ---\n"; |
| | 31 | "int8 - \n |
| | 32 | \tunsigned: <<b.readInt(001, FmtUInt8)>>\n |
| | 33 | \tsigned: <<b.readInt(011, FmtInt8)>>\n"; |
| | 34 | "int16 - \n |
| | 35 | \tunsigned, LE: <<b.readInt(021, FmtUInt16LE)>>\n |
| | 36 | \tsigned, LE: <<b.readInt(031, FmtInt16LE)>>\n |
| | 37 | \tunsigned, BE: <<b.readInt(041, FmtUInt16BE)>>\n |
| | 38 | \tsigned, BE: <<b.readInt(051, FmtInt16BE)>>\n"; |
| | 39 | "int32 - \n |
| | 40 | \tLE: <<b.readInt(0061, FmtInt32LE)>>\n |
| | 41 | \tLE: <<b.readInt(0071, FmtInt32LE)>>\n |
| | 42 | \tBE: <<b.readInt(0101, FmtInt32BE)>>\n |
| | 43 | \tBE: <<b.readInt(0111, FmtInt32BE)>>\n"; |
| | 44 | } |
| | 45 | |
| | 46 | fmtX(val, radix, len) |
| | 47 | { |
| | 48 | local str = toString(val, radix); |
| | 49 | local slen = str.length(); |
| | 50 | if (slen < len) |
| | 51 | str = makeString('0', len - slen) + str; |
| | 52 | return str; |
| | 53 | } |