diff options
Diffstat (limited to 'lib/byte.go')
-rw-r--r-- | lib/byte.go | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/lib/byte.go b/lib/byte.go index fbdfae9..e97faa1 100644 --- a/lib/byte.go +++ b/lib/byte.go @@ -65,3 +65,25 @@ func BytesToUint32s(bs []byte) []uint32 { } return u32s } + +func BytesToUint32sLittleEndian(bs []byte) []uint32 { + u32s := make([]uint32, 0) + + ui := uint32(0) // 32-bit word. + ab := uint(0) // Occupied bits in ui + for _, b := range bs { + if ab == 32 { + // ui full; add to u32s and reset ui. + u32s = append(u32s, ui) + ui = uint32(0) + ab = 0 + } + // Stuff byte into ui. + ui = ui | uint32(b)<<ab + ab = ab + 8 + } + if ui > 0 { + u32s = append(u32s, ui) + } + return u32s +} |