Golang konvertiert String in einen bestimmten Typ von int (int8, int16, int32, int64)

8

Ich versuche, String in Ganzzahl in go-lang zu analysieren. Das Problem, das ich damit gefunden habe, ist in der Dokumentation seine erwähnte Syntax ist wie folgt:

%Vor%

Dabei ist s die zu analysierende Zeichenfolge, base wird durch das Präfix der Zeichenfolge impliziert: Basis 16 für "0x", Basis 8 für "0" und andernfalls Basis 10.

Der bitSize Parameter ist, wo ich ein Problem habe. Gemäß der Dokumentation von ParseInt wird der Integer-Typ angegeben, in den das Ergebnis passen muss. Die Bitgrößen 0, 8, 16, 32 und 64 entsprechen int, int8, int16, int32 und int64.

Aber für alle Werte wie 0,8,16,32 & amp; 64. Ich bekomme den gleichen Rückgabewert. d. h. vom Int64-Typ.

Könnte mir jemand zeigen, was ich vermisse.

Code: Ссылка

    
Amol M Kulkarni 18.05.2015, 09:35
quelle

2 Antworten

15

Gemäß der Dokumentation

  

func ParseInt (s Zeichenfolge, Basis int, bitSize int) (i Int64, Fehler Fehler)

ParseInt liefert immer int64 egal was. Außerdem

  

Das Argument bitSize gibt den Ganzzahltyp an, den das Ergebnis haben muss   passen in

Im Grunde sagt der Parameter bitSize nur, dass der String-Wert, den Sie analysieren wollen, nach dem Parsing in die BitSize passen sollte. Wenn nicht, wird außerhalb des Bereichs passieren.

Wie in diesem PlayGround : strconv.ParseInt("192", 10, 8) (wie Sie den Wert nach der Parsing wäre größer als der Maximalwert von int8 ).

Wenn Sie es auf den von Ihnen benötigten Wert parsen möchten, verwenden Sie einfach int8(i) danach ( int8 , int16 , int32 ).

PS Da Sie das Thema, wie man in ein bestimmtes intX konvertiert, berührt haben, würde ich sagen, dass es auch möglich ist, in unsigned int .

    
Salvador Dali 18.05.2015, 09:47
quelle
9

ParseInt gibt immer int64 zurück, und Sie müssen das Ergebnis in den gewünschten Typ konvertieren. Wenn Sie 32 als drittes Argument übergeben, erhalten Sie einen Parse-Fehler, wenn der analysierte Wert nicht in int32 passt, der zurückgegebene Typ jedoch immer int64 .

Zum Beispiel:

%Vor%     
Paul Hankin 18.05.2015 09:42
quelle

Tags und Links