traduccion ps4 lenguaje language juego rust

rust - ps4 - ¿Cómo convierto un vector de bytes(u8) a una cadena



rust traduccion (3)

Para convertir una porción de bytes en una porción de cadena (asumiendo una codificación 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); }

La conversión está en el lugar y no requiere una asignación. Puede crear una String desde el segmento de cadena si es necesario llamando a .to_owned() en el segmento de cadena ( otras opciones están disponibles ).

La referencia de la biblioteca para la función de conversión:

Estoy intentando escribir un cliente TCP / IP simple en Rust y necesito imprimir el búfer que obtuve del servidor. ¿Cómo convierto el vector u8 en una String para imprimir?


Prefiero String::from_utf8_lossy :

fn main() { let buf = &[0x41u8, 0x41u8, 0x42u8]; let s = String::from_utf8_lossy(buf); println!("result: {}", s); }

Convierte los bytes UTF-8 no válidos en , por lo que no se requiere un manejo de errores. Es bueno para cuando no necesitas eso y casi no lo necesito. De hecho, obtienes una String de esto. Debería facilitar la impresión de lo que está obteniendo del servidor.

A veces es posible que necesite usar el método into_owned() ya que se clona en escritura.


Si realmente tiene un vector de bytes ( Vec<u8> ) y desea convertirlo en una String , lo más eficiente es reutilizar la asignación con la String::from_utf8 :

fn main() { let bytes = vec![0x41, 0x42, 0x43]; let s = String::from_utf8(bytes).expect("Found invalid UTF-8"); println!("{}", s); }