1 // Copyright (c) 2023 Huawei Device Co., Ltd.
2 // Licensed under the Apache License, Version 2.0 (the "License");
3 // you may not use this file except in compliance with the License.
4 // You may obtain a copy of the License at
5 //
6 //     http://www.apache.org/licenses/LICENSE-2.0
7 //
8 // Unless required by applicable law or agreed to in writing, software
9 // distributed under the License is distributed on an "AS IS" BASIS,
10 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11 // See the License for the specific language governing permissions and
12 // limitations under the License.
13 
14 //! Convert a str slice to u8 vector.
15 
decode(str: &str) -> Option<Vec<u8>>16 pub fn decode(str: &str) -> Option<Vec<u8>> {
17     if str.len() % 2 != 0 {
18         return None;
19     }
20     let mut vec = Vec::new();
21     let mut remained = str;
22     while !remained.is_empty() {
23         let (left, right) = remained.split_at(2);
24         match u8::from_str_radix(left, 16) {
25             Ok(num) => vec.push(num),
26             Err(_) => return None,
27         }
28         remained = right;
29     }
30     Some(vec)
31 }
32