rust中String,&str,Vec <u8>和&[u8]的惯用转换
2023-02-27 16:36:24
来源:
作者:
责任编辑:cncml
from |
to |
函数 |
&str |
String |
String::from(s) 或 s.to_string() 或 s.to_owned() |
&str |
&[u8] |
s.as_bytes() |
&str |
Vec<u8> |
s.as_bytes().to_vec() |
String |
&[u8] |
s.as_bytes() |
String |
&str |
s.as_str() 或 &s |
String |
Vec<u8> |
s.into_bytes() |
&[u8] |
&str |
std::str::from_utf8(s).unwrap() |
&[u8] |
String |
String::from_utf8(s).unwrap() |
&[u8] |
Vec<u8> |
s.to_vec() |
Vec<u8> |
&str |
std::str::from_utf8(&s).unwrap() |
Vec<u8> |
String |
String::from_utf8(&s).unwrap() |
Vec<u8> |
&[u8] |
&s 或 s.as_slice() |
修正下面表格
&str -> String--| String::from(s) or s.to_string() or s.to_owned()
&str -> &[u8]---| s.as_bytes()
&str -> Vec<u8>-| s.as_bytes().to_vec() or s.as_bytes().to_owned()
String -> &str----| &s if possible* else s.as_str()
String -> &[u8]---| s.as_bytes()
String -> Vec<u8>-| s.into_bytes()
&[u8] -> &str----| std::str::from_utf8(s).unwrap()
&[u8] -> String--| String::from_utf8(s).unwrap()
&[u8] -> Vec<u8>-| s.to_vec()
Vec<u8> -> &str----| std::str::from_utf8(&s).unwrap()
Vec<u8> -> String--| String::from_utf8(s).unwrap()
Vec<u8> -> &[u8]---| &s if possible* else s.as_slice()
上面转换内容已在网友提示下修正,之前版本答案有误导
// String 转 &str
let s = String::from("hello");
let s_slice: &str = &s;
// &str 转 String
let s = "hello";
let s_string: String = s.to_string(); |
// Vec<u8> 转 &[u8]
let v: Vec<u8> = vec![72, 101, 108, 108, 111]; // "Hello"
let v_slice: &[u8] = &v;
// &[u8] 转 Vec<u8>
let v_slice: &[u8] = &[72, 101, 108, 108, 111]; // "Hello"
let v_vec: Vec<u8> = v_slice.to_vec(); |
// String 转 Vec<u8>
let s = String::from("hello");
let v: Vec<u8> = s.into_bytes();
// Vec<u8> 转 String
let v: Vec<u8> = vec![104, 101, 108, 108, 111]; // "hello"
let s: String = String::from_utf8_lossy(&v).to_string(); |
// &str 转 &[u8]
let s: &str = "hello";
let s_bytes: &[u8] = s.as_bytes();
// &[u8] 转 &str
let s_bytes: &[u8] = &[104, 101, 108, 108, 111]; // "hello"
let s_str: &str = std::str::from_utf8(s_bytes).unwrap(); |
注意:在这些转换中,可能会出现编码问题。特别是,在将字节序列转换为字符串时,必须考虑编码方式(例如UTF-8),否则会导致错误。在某些情况下,使用特定的编码方式(例如ISO 8859-1)可能更合适。
版权声明:
1、本主题所有言论和图片纯属会员个人意见,与本网站立场无关
2、本站所有主题由该文章作者发表,该文章作者与
享有文章相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该文章作者和
的同意
4、文章作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
7、
管理员和版主有权不事先通知发贴者而删除本文