首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将u8向量打印为字符串?

如何将u8向量打印为字符串?
EN

Stack Overflow用户
提问于 2015-01-24 09:07:47
回答 4查看 35.2K关注 0票数 27

这是我的密码:

代码语言:javascript
复制
let mut altbuf: Vec<u8> = Vec::new();

// Stuff here...

match stream.read_byte() {
    Ok(d) => altbuf.push(d),
    Err(e) => { println!("Error: {}", e); doneflag = true; }
}

for x in altbuf.iter() {
    println!("{}", x);
}

代码打印的u8字节是正确的,但我不知道如何将纯u8字节的向量转换为字符串?对于堆栈溢出的类似问题,唯一的其他答案是假设您使用的是一个类型为U8的向量。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-01-24 09:54:18

如果您查看文档,可以使用以下几种方法。有String::from_utf8,有Vec<u8>,也有String::from_utf8_lossy,有&[u8]

请注意,Vec<T>或多或少是[T]的一个拥有的、可调整大小的包装器。也就是说,如果您有一个Vec<u8>,您可以将它转换为一个&[u8],最容易的方法是重新借用它(即&*some_vec)。您还可以直接在&[T]上调用在Vec<T>上定义的任何方法(通常,实现Deref特性的事情就是这样)。

票数 22
EN

Stack Overflow用户

发布于 2016-08-16 12:24:53

如果您的altbuf是如所示的u8向量,则应该可以这样做:

代码语言:javascript
复制
println!("{:?}", altbuf);

下面是一段经过编辑的代码,可以执行类似的操作:

代码语言:javascript
复制
let rebuilt: Vec<u8>;

unsafe {
    ret = proc_pidpath(pid, buffer_ptr, buffer_size);
    rebuilt = Vec::from_raw_parts(buffer_ptr as *mut u8, ret as usize, buffer_size as usize);
};

println!("Returned a {} byte string", ret);
println!("{:?}", rebuilt);

它从一个通过FFI调用的C函数填充的缓冲区中重新构建一个u8值向量,这样字节就可以是任何东西,可能是无效的UTF-8。

当我运行它时,输出是:

返回一个49字节字符串。 47、85、115、101、114、115、47、97、110、100、114、101、119、47、46、114、98、101、110、118、47、118、101、114、115、105、111、110、115、47、49、46、57、46、51、45、112、51、57、50、47、98、105、110、47、114、117、98、121

您可以使用不同格式字符串{}中格式化打印的数字(十六进制、八进制等)。

您可以使用String从其中获得一个String::from_utf8(rebuilt) --这可能会返回一个错误。

代码语言:javascript
复制
match String::from_utf8(rebuilt) {
    Ok(path) => Ok(path),
    Err(e) => Err(format!("Invalid UTF-8 sequence: {}", e)),
}
票数 4
EN

Stack Overflow用户

发布于 2020-09-04 03:33:30

若要以UTF-8字符串形式打印字节,请在字节可能格式错误时使用std::str::from_utf8。当字节总是有效的UTF-8时使用不安全的std::str::from_utf8_unchecked

代码语言:javascript
复制
println!("{}", std::str::from_utf8(&altbuf).unwrap());
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28123923

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档