Convertir un fichier binaire à décimal à l'aide de MySQL
Je suis en train de construire une requête MySQL qui concatène un tas de champs binaires et puis me donne le résultat sous forme DÉCIMALE.
e.g:
SELECT CONCAT (setting1, setting2, setting3) AS settings;
peut m'ont donné:
101
111
110
Je veux passer cette valeur à une fonction (convertir? casting?) qui va me donner la valeur DÉCIMALE correspondante:
5
7
6
J'ai déjà essayé quelques combinaisons de cast()
et convert()
mais je n'ai pas craqué encore.
Vous devez vous connecter pour publier un commentaire.
CONV(BINAIRE(CONCAT(setting1, setting2)), 2, 10)
N'ai pas essayé, mais l'essayer.
Tout d'abord, votre entrée disons est 6.
avec un champ
UNHEX transformer des données à partir hexadécimal en binaire.
CONV va transformer les données d'une base vers une autre.
Là pour transformer la base de 10 à 16 (dec hex) et puis nous ne hex bin.
Quand viennent les sélectionner, nous n'BIN HEX, HEX BIN
En réalité, vous pourriez faire
CONV(6, 10, 2)
et l'inverse lors de la lecture.SELECT CONV(HEX(UNHEX(6)), 16, 10)
, le résultat sera6
.1111
OU0100
OU0101
...Vous pourriez essayer de faire de la puissance de mathématiques en binaire
SELECT setting1 * 4 + setting2 * 2 + setting3 * 1 AS settings;
mais ce qu'il signifie qu'il est en train de faire
SELECT setting1 * POW(2, 2) + setting2 * POW(2, 1) + setting3 * POW(2, 0) AS settings;
2^0 représente le plus à droite bits
2^1 est la deuxième, et ainsi de suite...
Dans l'avenir si vous avez des colonnes binaires de MySQL, il pourrait être plus facile de les combiner en un seul [laisser un commentaire sur la colonne se souvenir de l'ordre]
Vous ajoutez des données dans la base de données comme
INSERT INTO settings (setting) VALUES (setting1 * 4 + setting2 * 2 + setting1 * 1);
et tirer un seul avec
SELECT setting & 2 FROM settings;
renvoie la valeur de setting2.
Regarder dans Fonctions Au Niveau Du Bit.