time_protocol/
tool.rs

1// 4*u8->i32
2pub fn u8_to_i32(v: [u8; 4]) -> i32 {
3    if v.len() < 4 {
4        return 0;
5    }
6    unsafe {
7        let i32ptr = v.as_ptr() as *const i32;
8        return *i32ptr;
9    }
10}
11
12/// i32->4*u8
13pub fn i32_to_u8(v: i32) -> [u8; 4] {
14    unsafe {
15        let i32ptr = &v as *const i32;
16        let u8ptr = i32ptr as *const u8;
17        return [
18            *u8ptr.offset(0),
19            *u8ptr.offset(1),
20            *u8ptr.offset(2),
21            *u8ptr.offset(3),
22        ];
23    }
24}
25
26pub fn u8_to_i64(v: [u8; 8]) -> i64 {
27    if v.len() < 8 {
28        return 0;
29    }
30    unsafe {
31        let i64ptr = v.as_ptr() as *const i64;
32        return *i64ptr;
33    }
34}
35
36pub fn i64_to_u8(v: i64) -> [u8; 8] {
37    unsafe {
38        let i64ptr = &v as *const i64;
39        let u8ptr = i64ptr as *const u8;
40        return [
41            *u8ptr.offset(0),
42            *u8ptr.offset(1),
43            *u8ptr.offset(2),
44            *u8ptr.offset(3),
45            *u8ptr.offset(4),
46            *u8ptr.offset(5),
47            *u8ptr.offset(6),
48            *u8ptr.offset(7),
49        ];
50    }
51}