Accueil > Forum > > > > Écriture de l'équivalant C d'une fonction en PHP
Écriture de l'équivalant C d'une fonction en PHP
mercredi 16 août 2006 à 00:30:02 |
Écriture de l'équivalant C d'une fonction en PHP

Revanb
|
Bonjour à tous !
Je débute tout juste en C, et là, je fais un petit programme où j'ai
besoin d'un fonction pour passer un nombre d'une base quelconque à une
autre base quelconque (et même supérieur à 36 et 62,
puisque les caractères à utiliser seraient définis dans une chaîne de
caractères !). À première vue, cela paraît quasi-impossible, mais
j'avais déjà utilisé une fonction PHP qui fait exactement la même chose Je me suis dit que PHP ressemblait assez au C pour pouvoir créer l'équivalent C de cette fonction... mais ça s'est révélé plus compliqué que je ne le pensais et j'aurais besoin de l'aide de quelqu'un de plus expérimenté :-)...
Voilà la fonction en PHP :
function base_convert_perso ($numstring, $frombase, $tobase) {
$chars = "0123456789abcdefghijklmnopqrstuvwxyz";
$tostring = substr($chars, 0, $tobase);
$length = strlen($numstring);
$result = '';
for ($i = 0; $i < $length; $i++) {
$number[$i] = strpos($chars, $numstring{$i});
}
do {
$divide = 0;
$newlen = 0;
for ($i = 0; $i < $length; $i++) {
$divide = $divide * $frombase + $number[$i];
if ($divide >= $tobase) {
$number[$newlen++] = (int)($divide / $tobase);
$divide = $divide % $tobase;
} elseif ($newlen > 0) {
$number[$newlen++] = 0;
}
}
$length = $newlen;
$result = $tostring{$divide} . $result;
}
while ($newlen != 0);
return $result;
}
Et ce que je me suis risqué à faire en C (oui je sais, ça pique les yeux (mais en même temps, ça fais pas une semaine que j'apprends le C ))
void base_convert (char numstring[], int frombase, int tobase) { char tostring[] = ALL_CHARS, result[] = "", finalResult[] = "", tostringSpec[] = ""; char* suiteAllChars = NULL; unsigned long length = 0, number[100] = {0}, divide = 0, newlen = 0; int i = 0, positionCarac; tostring[tobase] = '\0'; length = strlen(numstring); for (i = 0; i < length; i++) { suiteAllChars = strchr(ALL_CHARS, numstring[i]); positionCarac = strlen(ALL_CHARS) - strlen(suiteAllChars); number[i] = positionCarac; // position de numstring[i] dans ALL_CHARS } do { for (i = 0; i < length; i++) { divide = divide * frombase + number[i]; if (divide >= tobase) { number[newlen++] = (divide / tobase); divide = divide % tobase; } else if (newlen > 0) { number[newlen++] = 0; } } length = newlen; tostringSpec[0] = tostring[divide]; //comme je ne suis pas arrivé à concatener, j'affiche tout de suite le résultat printf("%s", tostringSpec); } while (newlen != 0); }
Je vous en prie, dites moins que je ne suis pas un cas désespéré ^^
Merci d'avance 
|
|
mercredi 16 août 2006 à 09:37:09 |
Re : Écriture de l'équivalant C d'une fonction en PHP

gagah1
|
La fonction itoa(...) de la bibliothèque standard fera l'affaire.
|
|
mercredi 16 août 2006 à 10:38:41 |
Re : Écriture de l'équivalant C d'une fonction en PHP

vecchio56
|
"je fais un petit programme où j'ai besoin
d'un fonction pour passer un nombre d'une base quelconque à une autre
base quelconque (et même supérieur à 36 et 62, puisque
les caractères à utiliser seraient définis dans une chaîne de
caractères !). À première vue, cela paraît quasi-impossible" Tu n'a jamais rencontré problème plus difficile que ca?
_____________________________________ Un éditeur de ressources gratuit pour Windows
|
|
mercredi 16 août 2006 à 10:50:55 |
Re : Écriture de l'équivalant C d'une fonction en PHP

Revanb
|
Bah non puisque c'est mon premier programme qui fait vraiment quelque chose ^^ Et puis ça n'est pas évident avec un niveau collège en math... la plupart de savent même pas ce qu'est une base  Et... je n'ai pas compris en quoi itoa() pourrait m'aider  pour la concaténation à la fin ? Mais ça n'est pas le plus gros problème... en fait, tout le calcul est un problème puisque le résultat est faux 
|
|
Cette discussion est classée dans : number, divide, newlen, tobase, numstring
Répondre à ce message
Sujets en rapport avec ce message
GMP random function [ par malik7934 ]
Hello!J'ai un bug bizarre... j'utilise les appels suivants pour créer un nombre au hasard:#include "gmp.h"...mpz_t prime_number, rand_n;...gmp_randsta
problème avec isdigit [ par deck_bsd ]
Voila j'ai un petit problème je voudrai faire en sorte que lors d'une insertion de nombre on recommence le code jusqu'à ce que le nombre soit un nombr
arret boucle while par clic bouton [ par julienbornet ]
Bonjour, je suis entrain de programer une API. Cette api est programmer dans une dialogu box. et je chehce a arreter une boucle while lorsque l'utilis
Sous-requête [ par Breizhim ]
Ce que je veux faire:* Ajouter une valeur à ma table (nom, prenom, telephone et ID). L'ID est un INT appartenant à un numéro de téléphone dans une aut
Appel du destructeur inopinément [ par petitavion414 ]
Bonjour à tous... Voilà j'ai un petit problème. J'ai crée une classe complex dans laquelle j'ai defini quelques méthodes. Jusqu'ici rien de bien passi
question su r la fonction "str(Number)...." [ par franco82 ]
bonjour, je cherche a convertir un nombre entier en chaine de charactère!pour cela j'ai trouver la fonction str(...)mais jaimerais savoir quelle inclu
Fonctionnalités EditBox [ par fredsor ]
Salut a tous, Voila j'ai développé une application en Win32 sous Embedded VIsual C++, mais j'aimerais maintenant y ajouter des petites fonctionnalités
simplifier prog. [ par F0ra ]
Bonjour,Je cherche de l'aide pour simplifier mon programme au maximumVoici, le contenu du fichier txt :0 1 2 5 3 4 . 1 2 51 1 5 2 2 6 . 9 2 3 2 5 9 8
Probleme inconnu [ par adil1251985 ]
salut tout le monde, je suis entrain de developper un programme qui calcule le produit de deux grands nombres, pour cela j'ai pas travaillé avec des
WIN32 Edit box avec le style ES_NUMBER [ par Pistol_Pete ]
Bonjour à tous,J'ai un Edit box qui possède le style ES_NUMBER.J'aimerai, lorsque j'entre des chiffres, qu'il m'affiche un espace symbolisant les mil
Livres en rapport
|
Derniers Blogs
UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
RE : WIN APIRE : WIN API par racpp
Cliquez pour lire la suite par racpp
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|