Correct unsigned byte behavior

This commit is contained in:
Your Name 2013-04-15 15:09:07 +02:00
parent 9cc5765017
commit 2774596d04

View file

@ -529,11 +529,11 @@ abstract class ByteIterator extends BufferedIterator[Byte] {
def getLongPart(n: Int)(implicit byteOrder: ByteOrder): Long = { def getLongPart(n: Int)(implicit byteOrder: ByteOrder): Long = {
if (byteOrder == ByteOrder.BIG_ENDIAN) { if (byteOrder == ByteOrder.BIG_ENDIAN) {
var x = 0L var x = 0L
(1 to n) foreach (_ x = (x << 8) | next()) (1 to n) foreach (_ x = (x << 8) | (next() & 0xff))
x x
} else if (byteOrder == ByteOrder.LITTLE_ENDIAN) { } else if (byteOrder == ByteOrder.LITTLE_ENDIAN) {
var x = 0L var x = 0L
(0 until n) foreach (i x |= next() << 8 * i) (0 until n) foreach (i x |= (next() & 0xff) << 8 * i)
x x
} else throw new IllegalArgumentException("Unknown byte order " + byteOrder) } else throw new IllegalArgumentException("Unknown byte order " + byteOrder)
} }