Ich arbeite mit einem HID-Treiber, und dieser Treiber liest auf einen []byte
Puffer einen von ein paar verschiedenen Berichten. Wenn ich hex.EncodeToString(buffer)
benutze, gibt es eine Zeichenkette zurück, die wie 0000
oder 0100
oder 0200
, etc. aussieht. Ich möchte mit einem Schalter gegen die Eingabe vom HID Gerät überprüfen, und deshalb möchte ich diese Möglichkeiten vordefinieren main()
, wie soll ich fortfahren?Definieren Sie ein [] Byte ohne hex.DecodeString
Ich habe diese Möglichkeiten versucht:
var LEFT []byte = []byte('0000')
// or
var LEFT []byte = `0000`
// or
var LEFT []byte = '0000'
// or
var LEFT []byte = '\x00\x00' // from the %q Printf verb
Die Alternative ist, dass ich hex.DecodeString("0000")
innerhalb der main() Funktion aufrufen.
bearbeiten
Ein Hinweis auf die Lösung angeboten, die EncodeToString
hex 0000
oder 0100
ist nicht vier Bytes, sondern zwei:
"\x01"
== == "01"
'1'
so kann ich verwenden, um 0100 oder 0200 zu bekommen, wie vorgeschlagen:
var LEFT []byte{1,0}
// or
var LEFT []byte("\x01\x00")
_ „... aber dies beinhaltet Fehlerprüfung, und ich hatte gehofft, sie beiseite zu setzen.“ _ Wenn Sie in Go arbeiten/Programm wollen, gewöhnen Überprüfung auf Fehler. Sonst wirst du dein (Go) Leben miserabel machen ... – icza
Oh, und ich liebe die Fehlerprüfung, ich meinte, ich wollte nicht nach einem DecodeString suchen, für den ich sicher war, dass Ich wollte das [] Byte vor dem Kompilieren definieren, mit einem Wert, von dem ich mir bereits sicher war, dass er mir keinen Fehler geben würde. – Nevermore
Wenn Sie wissen, dass es nicht fehlschlägt, können Sie eine 'MustDecode()' Hilfsfunktion bereitstellen. Details finden Sie in der Antwort [Gehe zu: Mehrfachwert in einem einwertigen Kontext] (http://stackoverflow.com/a/28233172/1705598). – icza