Ни [u8]
, ни [u8; 4]
не реализует ReadBytesExt
. Как показано в документации , вы можете использовать std::io::Cursor
:
let my_array = [0b00000000,0b01010101,0b00100100,0b11011011];
let mut cursor = Cursor::new(my_array);
let result = cursor.read_u32::<LittleEndian>();
println!("{:?}", result);
Детская площадка
Здесь можно использовать любой тип, который реализует Read
, поскольку ReadBytesExt
реализован следующим образом ( ссылка на источник ):
impl<R: io::Read + ?Sized> ReadBytesExt for R {}
Поскольку &[u8]
реализует Read
, вы можете упростить его до
(&my_array[..]).read_u32::<LittleEndian>();
или даже использовать черту LittleEndian
напрямую:
LittleEndian::read_u32(&my_array);
Детские площадки: (&my_array)
, LittleEndian
В вашем коде есть другие ошибки:
[00000000,01010101,00100100,11011011]
завернут. Используйте двоичный литерал вместо : [0b0000_0000,0b0101_0101,0b0010_0100,0b1101_1011]
- Вы должны использовать
_
, чтобы сделать длинные цифры более читабельными
- переменные должны быть в
snake_case
. Используйте my_array
вместо myArray
- Вы делаете ненужное назначение в коде. Используйте
let my_array = [0b0000...
Смотри также: