1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | import std.algorithm; // For reverse void main() { ubyte[] littleEndian = [ 68, 135, 133, 10 ]; auto bigEndian = littleEndian.dup; bigEndian.reverse(); union Fake { int i; ubyte[4] b; } Fake f; f.i = 176_523_076; assert(f.b == littleEndian); // Machine is Little // Little Endian data f.i = little(littleEndian); // Converts to machine native assert(f.b == littleEndian); // Big Endian data f.i = big(bigEndian); // Converts to machine native assert(f.b == littleEndian); ubyte[] madeBig; // Want Big Endian Here f.b = littleEndian; // first int in Little Endian madeBig = machineDependant(f.i); assert(madeBig == bigEndian); // Converted to Big Endian f.b = bigEndian; // second int in Big Endian madeBig = machineDependant(f.i); assert(madeBig == bigEndian); // Fail Convert to Big Endian } int little(ubyte[] data) { return (data[0]<<0) | (data[1]<<8) | (data[2]<<16) | (data[3]<<24); } int big(ubyte[] data) { return (data[3]<<0) | (data[2]<<8) | (data[1]<<16) | (data[0]<<24); } ubyte[] machineDependant(int guida) { auto uuid = new ubyte[4]; uuid[0] = (guida>>24)&0xff; uuid[1] = (guida>>16)&0xff; uuid[2] = (guida>>8)&0xff; uuid[3] = (guida>>0)&0xff; return uuid; } |
aW1wb3J0IHN0ZC5hbGdvcml0aG07IC8vIEZvciByZXZlcnNlCgp2b2lkIG1haW4oKSB7CiAgICB1Ynl0ZVtdIGxpdHRsZUVuZGlhbiA9IFsgNjgsIDEzNSwgMTMzLCAxMCBdOwogICAgYXV0byBiaWdFbmRpYW4gPSBsaXR0bGVFbmRpYW4uZHVwOwogICAgYmlnRW5kaWFuLnJldmVyc2UoKTsKCiAgICB1bmlvbiBGYWtlIHsKICAgICAgICBpbnQgaTsKICAgICAgICB1Ynl0ZVs0XSBiOwogICAgfQogICAgRmFrZSBmOwoKICAgIGYuaSA9IDE3Nl81MjNfMDc2OwogICAgYXNzZXJ0KGYuYiA9PSBsaXR0bGVFbmRpYW4pOyAvLyBNYWNoaW5lIGlzIExpdHRsZQoKICAgIC8vIExpdHRsZSBFbmRpYW4gZGF0YQogICAgZi5pID0gbGl0dGxlKGxpdHRsZUVuZGlhbik7CiAgICAvLyBDb252ZXJ0cyB0byBtYWNoaW5lIG5hdGl2ZQogICAgYXNzZXJ0KGYuYiA9PSBsaXR0bGVFbmRpYW4pOwoKICAgIC8vIEJpZyBFbmRpYW4gZGF0YQogICAgZi5pID0gYmlnKGJpZ0VuZGlhbik7CiAgICAvLyBDb252ZXJ0cyB0byBtYWNoaW5lIG5hdGl2ZQogICAgYXNzZXJ0KGYuYiA9PSBsaXR0bGVFbmRpYW4pOwoKICAgIHVieXRlW10gbWFkZUJpZzsgLy8gV2FudCBCaWcgRW5kaWFuIEhlcmUKICAgIGYuYiA9IGxpdHRsZUVuZGlhbjsgLy8gZmlyc3QgaW50IGluIExpdHRsZSBFbmRpYW4KICAgIG1hZGVCaWcgPSBtYWNoaW5lRGVwZW5kYW50KGYuaSk7CiAgICBhc3NlcnQobWFkZUJpZyA9PSBiaWdFbmRpYW4pOyAvLyBDb252ZXJ0ZWQgdG8gQmlnIEVuZGlhbgogICAgZi5iID0gYmlnRW5kaWFuOyAvLyBzZWNvbmQgaW50IGluIEJpZyBFbmRpYW4KICAgIG1hZGVCaWcgPSBtYWNoaW5lRGVwZW5kYW50KGYuaSk7CiAgICBhc3NlcnQobWFkZUJpZyA9PSBiaWdFbmRpYW4pOyAvLyBGYWlsIENvbnZlcnQgdG8gQmlnIEVuZGlhbgoKfQoKaW50IGxpdHRsZSh1Ynl0ZVtdIGRhdGEpIHsKICAgIHJldHVybiAoZGF0YVswXTw8MCkgfCAoZGF0YVsxXTw8OCkgfCAoZGF0YVsyXTw8MTYpIHwgKGRhdGFbM108PDI0KTsKfQppbnQgYmlnKHVieXRlW10gZGF0YSkgewogICAgcmV0dXJuIChkYXRhWzNdPDwwKSB8IChkYXRhWzJdPDw4KSB8IChkYXRhWzFdPDwxNikgfCAoZGF0YVswXTw8MjQpOwp9CnVieXRlW10gbWFjaGluZURlcGVuZGFudChpbnQgZ3VpZGEpIHsKICAgIGF1dG8gdXVpZCA9IG5ldyB1Ynl0ZVs0XTsKCiAgICB1dWlkWzBdID0gKGd1aWRhPj4yNCkmMHhmZjsKICAgIHV1aWRbMV0gPSAoZ3VpZGE+PjE2KSYweGZmOwogICAgdXVpZFsyXSA9IChndWlkYT4+OCkmMHhmZjsKICAgIHV1aWRbM10gPSAoZ3VpZGE+PjApJjB4ZmY7CiAgICByZXR1cm4gdXVpZDsKfQ==
-
upload with new input
-
result: Runtime error time: 0.01s memory: 2100 kB signal: -1
core.exception.AssertError@prog(33): Assertion failure


