Convertire bin to decimal

houarihabiba 1 Messages postés mercredi 15 février 2017Date d'inscription 17 février 2017 Dernière intervention - 17 févr. 2017 à 15:42 - Dernière réponse : Cirec 4221 Messages postés vendredi 23 juillet 2004Date d'inscriptionModérateurStatut 11 mai 2018 Dernière intervention
- 20 févr. 2017 à 17:19
Bonjour,
lorsque on convertir un chiffre binaire >12 par exemple 100010011011 cette fonction ne convertir pas????
Afficher la suite 

Votre réponse

7 réponses

dubois77 689 Messages postés jeudi 17 avril 2008Date d'inscription 9 mars 2018 Dernière intervention - Modifié par dubois77 le 18/02/2017 à 08:21
0
Utile
Salut
C'est pas très clair !
<< 12 par exemple 100010011011>>
Quel rapport entre le "12" et le "100010011011"
Je suppose que c'est du binaire, auquel cas effectivement ça n'est pas 12
Donne un bout de code ou tu utilises cette soit disante fonction "bintidcimal"
Whismeril 11518 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 20 mai 2018 Dernière intervention - 18 févr. 2017 à 08:52
Bonjour dubois,

peut être qu'avec >12, il voulait dire que jusqu'à 12 ça marche et après non?
Commenter la réponse de dubois77
dubois77 689 Messages postés jeudi 17 avril 2008Date d'inscription 9 mars 2018 Dernière intervention - 18 févr. 2017 à 09:21
0
Utile
Salut Whismeril
Tu as raison c'est ce qu'il semble dire.
Par contre je ne connais pas de function Delphi qui fasse ce travail.
Il y a déjà eu le même sujet traité qui donne une fonction :
http://codes-sources.commentcamarche.net/forum/affich-907853-conversion-binaire-decimal
Commenter la réponse de dubois77
Cirec 4221 Messages postés vendredi 23 juillet 2004Date d'inscriptionModérateurStatut 11 mai 2018 Dernière intervention - 18 févr. 2017 à 13:16
0
Utile
Salut,

c'est vrai que ce n'est pas un modèle de clarté !!! ^^

Mais en cherchant un peu sur Google (eh oui encore lui :p)
on trouve ceci:
 // http://stackoverflow.com/questions/21361627/converting-decimal-integer-to-binary-how-and-why-it-works-the-way-it-does
function IntToBin(p_nb_int: Uint64; p_nb_digits: Byte = 64): string;
begin
  SetLength(Result, p_nb_digits);
  while p_nb_digits > 0 do
  begin
    if odd(p_nb_int) then
      Result[p_nb_digits] := '1'
    else
      Result[p_nb_digits] := '0';
    p_nb_int := p_nb_int shr 1;
    dec(p_nb_digits);
  end;
end;


et son utilisation:
Edit1.Text := '2203';
  Label1.Caption := IntToBin(StrToInt(Edit1.Text), 12);
résultat: "100010011011"
Commenter la réponse de Cirec
0
Utile
Salut,
Je vais répondre sur...ben ici...
Voilà des fonctions...qui ressemble à celle proposée par Cirec...
uses Math,...
...
type
TSizeBits = (sb8Bits, sb16Bits, sb32Bits, sb64Bits);
...
function BinToInt64(S: string; ASizeBits: TSizeBits): Int64;
var
  I : Integer;
  J : Integer;
  FSizeBits: Byte;
begin
  Result := 0;
  J := 0;
  case ASizeBits of
    sb8Bits: FSizeBits := 8;
    sb16Bits: FSizeBits := 16;
    sb32Bits: FSizeBits := 32;
    sb64Bits: FSizeBits := 64;
  end;
  while Length(S) < FSizeBits do
    S := '0' + S;
  for I := Length(S) downto 2 do
  begin
    if Odd(Byte(S[I])) then
      Result := Result + Round(Power(2, J));
    Inc(J);
  end;
  if S[1] = '1' then
    Result := Result - Round(Power(2, FSizeBits) / 2);
end;

function Int64ToBin(Value: Int64; ASizeBits: TSizeBits): string;
var
  FSizeBits  : Byte;
begin
  Result := '';
  case ASizeBits of
    sb8Bits: FSizeBits := 8;
    sb16Bits: FSizeBits := 16;
    sb32Bits: FSizeBits := 32;
    sb64Bits: FSizeBits := 64;
  end;
  SetLength(Result, FSizeBits);
  while FSizeBits > 0 do
  begin
    if Odd(Value) then
      Result[FSizeBits] := '1'
    else
      Result[FSizeBits] := '0';
    Value := Value shr 1;
    Dec(FSizeBits);
  end;
end;

Pour l'utilisation :
Label1.Caption := IntToStr(BinToInt64('100010011011', sb16Bits));
Résultat BinToInt64 = 2203
Label1.Caption := Int64ToBin(2203, sb16Bits);
Résultat Int64ToBin= 0000100010011011
@+
Cirec 4221 Messages postés vendredi 23 juillet 2004Date d'inscriptionModérateurStatut 11 mai 2018 Dernière intervention - 20 févr. 2017 à 17:19
Bien vu ;)
Commenter la réponse de Yanb

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.