Golang conversion de chaîne de caractères de type int (int8,int16,int32,int64)
Je suis en train d'analyser une chaîne en un entier en aller-lang. Le Problème que j'ai trouvé c'est dans la documentation de ses mentionné la syntaxe est comme suit:
ParseInt(s string, base int, bitSize int)
où, s
est la chaîne à parser, base
est implicite par la chaîne de caractères du préfixe: base 16 par "0x", de la base de 8 à "0" et de la base de 10 sinon.
La bitSize
paramètre est là, je suis confronté à un problème. Selon les documents de ParseInt, il spécifie le type d'entier que le résultat doit s'adapter. Peu tailles 0, 8, 16, 32, et 64 correspondent à int, int8, int16, int32, et int64.
Mais pour toutes les valeurs comme 0,8,16,32 & 64. J'obtiens le même type de valeur de retour. j'.e de type int64.
Quelqu'un pourrait-il m'indiquer ce que je manque.
Code: https://play.golang.org/p/F3LbUh_maY
OriginalL'auteur Amol M Kulkarni | 2015-05-18
Vous devez vous connecter pour publier un commentaire.
Comme par la documentation
ParseInt toujours revenir
int64
n'importe quoi. En outreDonc, fondamentalement, votre
bitSize
paramètre indique seulement que la valeur de chaîne que vous allez analyser doit s'adapter à la bitSize après l'analyse. Si pas, sortir de gamme qui va arriver.Comme dans ce Aire de jeux:
strconv.ParseInt("192", 10, 8)
(que vous pouvez voir la valeur après l'analyse serait plus grand que la valeur maximale deint8
).Si vous voulez de l'analyser pour la valeur que vous avez besoin, il suffit d'utiliser
int8(i)
par la suite (int8
,int16
,int32
).P. S. parce que vous avez abordé le sujet comment convertir spécifiques intX, je voudrais indiquer qu'il est aussi possible de les convertir à unsigned int.
OriginalL'auteur Salvador Dali
ParseInt
retourne toujours uneint64
, et vous avez besoin de convertir le résultat de votre type désiré. Lorsque vous passez32
en tant que troisième argument, alors vous aurez une erreur d'analyse si la valeur analysée ne rentre pas dans unint32
, mais le retour est toujours de typeint64
.Par exemple:
OriginalL'auteur Paul Hankin