2017-01-05 8 views
0

In meiner Terminal-Befehl der adb shell screencap -p | sed 's/\r$//' > screen.png es Arbeit ist, meinen Android-Bildschirm speichern.Wie benutze ich stdout in Rust?

Ich weiß, kann adb pull verwenden, aber ich möchte wissen, wie stdout Art und Weise verwenden, um ein Bild in Rust sparen? Also, ich versuche diesen Code, kaufen kann das Bild nicht öffnen. Möglicherweise gibt es ein Problem bei der Kodierung, aber ich weiß nicht, wie ich sie beheben kann.

+0

Bitte [Bearbeiten] Ihre Frage * enthält die Fehler * Sie bekommen. – Shepmaster

Antwort

1

Bilddaten sind binär, keine Unicode-Zeichenfolge. Sie müssen also eine &[u8] und kein UTF-8 String drucken.

let out = std::io::stdout(); 
out.write_all(slice)?; 
out.flush()?; 

Die flush ist notwendig, da write_all sofort von einem Beenden des Programm folgte nicht den Bytes auf den zugrunde liegenden Dateideskriptor zu liefern.

Da rust keine String-Verarbeitung für u8-Arrays hat, müssen Sie die adb-Manglung manuell rückgängig machen, indem Sie die Bytes durchlaufen und prüfen, ob die aktuelle \ r und die nächste \ n ist und dann die aktuelle überspringen.

+0

Wie würde OP das Ersetzen von '\ r' durchführen, das sie machen möchten? – Shepmaster

+0

das überspringt nur das letzte Byte scheint es – the8472