Sto cercando di scrivere un semplice client TCP/IP in Rust e ho bisogno di stampare il buffer che ho ricevuto dal server. Come convertire il vettore u8
in un String
per la stampa?Come convertire un vettore di byte (u8) in una stringa
risposta
Per convertire una fetta di byte di una fetta stringa (ipotizzando una codifica 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 conversione è sul posto, e non richiede un'allocazione. È possibile creare uno String
dalla sezione, se necessario.
Il riferimento libreria per la funzione di conversione:
preferisco String::from_utf8_lossy
:
fn main() {
let buf = &[0x41u8, 0x41u8, 0x42u8];
let s = String::from_utf8_lossy(buf);
println!("result: {}", s);
}
Si scopre non validi byte UTF-8 nella Comunità e quindi non la gestione degli errori è obbligatorio. Fa bene quando non ne hai bisogno e non ne ho proprio bisogno. In questo caso ricevi uno String
. Dovrebbe rendere la stampa di quello che stai ricevendo dal server un po 'più facile.
A volte potrebbe essere necessario utilizzare il metodo into_owned()
poiché è clonazione in scrittura.
Grazie mille per il suggerimento 'in_owned()'! Era esattamente quello che stavo cercando (questo fa diventare un 'String' appropriato che puoi restituire come valore di ritorno da un metodo, per esempio). –
Se effettivamente avete un vettore di byte (Vec<u8>
) e si desidera convertire a un String
, la più efficiente è quello di riutilizzare l'assegnazione con String::from_utf8
:
fn main() {
let bytes = vec![0x41, 0x42, 0x43];
let s = String::from_utf8(bytes).expect("Found invalid UTF-8");
println!("{}", s);
}
Grazie! Perché le altre due risposte ignorano la domanda? – Jehan
@Jehan perché in genere le persone non sono brave a fare domande, soprattutto quando sono nuove in una lingua. Rust fa una distinzione tra un * array *, un * slice * e un * 'Vec' *, ma i nuovi arrivati non conoscono le differenze. Assicurati di superare tutte le domande e le risposte che si rivelano comunque utili. – Shepmaster
- 1. Convertire una stringa ascii letterale in & [u8] in Rust?
- 2. Come convertire 'struct' in '& [u8]'?
- 3. Matlab, come convertire una stringa di interi in un vettore?
- 4. Posso creare una porzione di un singolo byte (u8)?
- 5. Come si converte una stringa in un vettore di byte in ruggine?
- 6. come convertire stringa in byte [] in C#
- 7. Convertire una stringa esadecimale in un byte in Java
- 8. Come convertire una stringa esadecimale in un byte e un byte in una stringa esadecimale in Javascript?
- 9. Convertire una matrice di byte in stringa in Silverlight?
- 10. Come convertire una stringa con codifica esadecimale in una stringa di byte in Perl?
- 11. Come convertire l'array di byte UInt8 in stringa in Swift
- 12. Come convertire l'array di byte in stringa in Common Lisp?
- 13. Converti stringa di byte in stringa codificata in base64 (l'output non è una stringa di byte)
- 14. Come convertire la matrice di byte in stringa in Java?
- 15. conversione di byte in una stringa C#
- 16. Come posso convertire una stringa con terminazione null in un buffer di byte in una stringa in Go?
- 17. Come posso convertire in modo sicuro un array di byte in una stringa e tornare indietro?
- 18. Come convertire Bitmap in una stringa Base64?
- 19. Python: Come convertire una stringa contenente byte esadecimali in una stringa esadecimale
- 20. Come convertire un numero intero in una stringa di byte di lunghezza variabile?
- 21. Come convertire un int in una stringa?
- 22. Come convertire un HTMLElement in una stringa
- 23. come convertire una stringa in un bool
- 24. Come convertire una stringa in un decimale?
- 25. Come convertire una sequenza in un byte [] in Clojure?
- 26. Come convertire l'immagine in array di byte e array di byte in stringa Base64 in Android?
- 27. Come posso convertire un python casuale in una stringa?
- 28. Come convertire WebResponse.GetResponseStream in una stringa?
- 29. Come convertire l'array di byte in MultipartFile
- 30. Convertire una stringa di 0-F in un array di byte in Ruby
si consiglia di aggiungere che questo è possibile perché Vec costruisce a fette – torkleyy
anche se il codice di esempio in realtà non usa un vettore :-) –