pub fn slice_bool(a: &[u8], index: usize) -> bool { (a[index / 8] >> (7 - (index % 8))) == 1 } pub fn slice_int(a: &[u8], start_bit: usize, length_bits: usize) -> u32 { let i = start_bit as u32; let i2 = length_bits as u32; let mut i3: u32 = (i as u32) & 7; let mut i4: u32 = i3; let mut i5: u32 = (i as u32) >> 3; let mut i6: u32 = (1 << (8 - i3)) - 1; let mut i7: u32 = 0; let mut i8: u32 = 0; while (i2 - i7) > 0 { i8 |= (i6 & a[i5 as usize] as u32) << ((i4 + 24) - i7); i7 += 8 - i4; i6 = 255; i4 = 0; i5 += 1; } i8 >> (32 - i2) } pub fn slice_base64(a: &[u8], start_bit: usize, chars: usize) -> String { let mut sb = String::new(); let mut i = start_bit as u32; let mut i2 = chars as u32; let mut i3: u32 = i & 7; let mut i4: u32 = i3; let mut i5: u32 = i >> 3; let mut i6: u32 = (1 << (8 - i3)) - 1; let mut i7: u32 = 0; let mut i8: u32 = 0; while i2 > 0 { if i7 >= 6 { sb.push(((i8 >> 26) + 32) as u8 as char); i8 <<= 6; i7 -= 6; i2 -= 1; } else { i8 |= (i6 & a[i5 as usize] as u32) << ((i4 + 24) - i7); i7 += 8 - i4; i6 = 255; i4 = 0; i5 += 1 } } sb }