我有一些固定大小的陣列的結構:切片到固定大小的數組
struct PublicHeaderBlock_LAS14 {
file_signature: [u8; 4],
file_source_id: u16,
global_encoding: u16,
project_id_data_1: u32,
project_id_data_2: u16,
project_id_data_3: u16,
project_id_data_4: [u8; 8],
version_major: u8,
version_minor: u8,
systemIdentifier: [u8; 32], // ...
}
我以字節爲單位讀出從一個文件到一個固定大小陣列和正在拷貝的那些字節到該結構的位一點點。
fn create_header_struct_las14(&self, buff: &[u8; 373]) -> PublicHeaderBlock_LAS14 {
PublicHeaderBlock_LAS14 {
file_signature: [buff[0], buff[1], buff[2], buff[3]],
file_source_id: (buff[4] | buff[5] << 7) as u16,
global_encoding: (buff[6] | buff[7] << 7) as u16,
project_id_data_1: (buff[8] | buff[9] << 7 | buff[10] << 7 | buff[11] << 7) as u32,
project_id_data_2: (buff[12] | buff[13] << 7) as u16,
project_id_data_3: (buff[14] | buff[15] << 7) as u16,
project_id_data_4: [buff[16], buff[17], buff[18], buff[19], buff[20], buff[21], buff[22], buff[23]],
version_major: buff[24],
version_minor: buff[25],
systemIdentifier: buff[26..58]
}
}
最後一行(systemIdentifier
)不起作用,因爲在結構它是一個[u8; 32]
和buff[26..58]
是一個切片。我可以返回將切片轉換爲一個固定大小的數組,而不是像我做過的那樣說file_signature
?
我一直在試圖創建一個'make_array (slice:&[T]) - > A' ...到目前爲止我還沒有成功。 –
我已經問過https://stackoverflow.com/questions/37678698/function-to-build-a-fixed-sized-array-from-slice,看看是否有人有線索如何使這個幫手工作;這將大大簡化這裏的事情。 –