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>>16pub 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