From e3d37099daa4ff9e97f104bef02fcb74ea776a41 Mon Sep 17 00:00:00 2001 From: themighty1 Date: Sat, 16 Apr 2022 07:39:29 +0300 Subject: [PATCH] fix endianess --- mpc-core/src/utils.rs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/mpc-core/src/utils.rs b/mpc-core/src/utils.rs index 53d200c6e..9562391d3 100644 --- a/mpc-core/src/utils.rs +++ b/mpc-core/src/utils.rs @@ -5,7 +5,7 @@ pub fn boolvec_to_u8vec(bv: &[bool]) -> Vec { let offset = if bv.len() % 8 == 0 { 0 } else { 1 }; let mut v = vec![0u8; bv.len() / 8 + offset]; for (i, b) in bv.iter().enumerate() { - v[i / 8] |= (*b as u8) << (i % 8); + v[i / 8] |= (*b as u8) << (7 - (i % 8)); } v } @@ -15,7 +15,7 @@ pub fn u8vec_to_boolvec(v: &[u8]) -> Vec { let mut bv = Vec::with_capacity(v.len() * 8); for byte in v.iter() { for i in 0..8 { - bv.push((1 << i) & byte != 0); + bv.push(((byte >> (7 - i)) & 1) != 0); } } bv @@ -84,6 +84,10 @@ mod tests { #[test] fn test_boolvec_to_u8vec() { + let mut u = vec![false; 16]; + u[7] = true; + assert_eq!(boolvec_to_u8vec(&u), &256u16.to_be_bytes()); + let v = (0..128) .map(|_| rand::random::()) .collect::>(); @@ -94,6 +98,10 @@ mod tests { #[test] fn test_u8vec_to_boolvec() { + let mut u = vec![false; 16]; + u[7] = true; + assert_eq!(u8vec_to_boolvec(&256u16.to_be_bytes()), u); + let v = (0..128).map(|_| rand::random::()).collect::>(); let v_ = u8vec_to_boolvec(&v); let v__ = boolvec_to_u8vec(&v_);