1. ホーム
  2. rust

[解決済み] バイトのベクター(u8)を文字列に変換するには?

2022-04-24 18:42:14

質問

Rustで簡単なTCP/IPクライアントを書こうとしているのですが、サーバーから受け取ったバッファをプリントアウトする必要があります。

をどのように変換するのですか? Vec<u8> (または &[u8] から String ?

解決方法は?

バイトのスライスを文字列のスライスに変換する(エンコーディングはUTF-8とする)。

use std::str;

//
// pub fn from_utf8(v: &[u8]) -> Result<&str, Utf8Error>
//
// Assuming buf: &[u8]
//

fn main() {

    let buf = &[0x41u8, 0x41u8, 0x42u8];

    let s = match str::from_utf8(buf) {
        Ok(v) => v,
        Err(e) => panic!("Invalid UTF-8 sequence: {}", e),
    };

    println!("result: {}", s);
}

変換はインプレースで行われ、アロケーションは必要ありません。このため String 必要であれば、文字列スライスから .to_owned() を文字列スライス ( 他のオプションも利用可能 ).

変換関数のライブラリリファレンスです。