2017-08-11 6 views
-1

J'ai besoin de convertir les données dont je ne sais pas s'il estY at-il moyen de savoir que les données sont décimales ou binaires ou hexadécimales?

  • décimal
  • binaire
  • hexadécimal

au format décimal.

Jusqu'à présent, je l'ai essayé d'utiliser

  • bindec() pour convertir des données binaires en décimal
  • hexdec() pour convertir hexadécimal en décimal

Cependant, je dois déterminer à l'avance si une le nombre est décimal ou hexadécimal.

Y a-t-il un moyen de faire cela?

+0

Veuillez montrer les données de l'échantillon. – Yunnosch

+6

Pouvez-vous dire si 11 est onze, dix-sept ou trois sans autre information? –

+0

Les fonctions que vous avez essayées convertissent des STRINGS au format binaire et hexadécimal en nombre entier. Utilisez 'intval()' pour détecter et convertir automatiquement les valeurs. Aussi, vérifiez ma réponse pour plus d'informations. –

Répondre

1

La seule différence entre les bases arbitraires que vous pouvez rencontrer sont des littéraux. En PHP, chaque nombre est stocké en tant qu'entier ou flottant.

$binary = 0b1100; // stored as 12 
$oct = 014; // stored as 12 
$hex = 0xC; // stored as 12 

Cependant, si vos données est une chaîne, vous pouvez utiliser regex pour déterminer son type, que d'utiliser hexdec(), octdec(), bindec() fonctions pour les convertir en décimal.

OU, vous pouvez utiliser la fonction intval(), qui détecte automatiquement le type par la mise en forme de la chaîne:

intval("0b000"); // bin->dec conversion 
intval("014"); // oct->dec conversion 
intval("0xC"); // hex->dec conversion 
intval("12"); // str->dec cast!! 
intval("asd"); // str->dec cast!! 

Rights Watch avec des chaînes non formatées, parce que intval() se transforme tout en un certain nombre.