Conversion en binaire

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Conversion en binaire

par Hywan » 26 juil. 2007, 18:49

MERCI Genova et HyWaN !
J'ai pas fais grand chose, c'est surtout Genova ;-)

par titerm » 26 juil. 2007, 16:29

Dans les fonctions standards pour faire ca, y a pack() et unpack()

par t5in9tao » 26 juil. 2007, 14:57

Wouhw! C'est exactement ce que je souhaitais ! :o
Je viens de la tester avec un caractère japonais, celui-ci : 森, c'est ça semble très bien fonctionner.

MERCI Genova et HyWaN !

Peut-être que dans PHP 6, une nouvelle fonction permettra ce genre de conversion directement. Quoi qu'il en soit celle là est très claire et très fonctionnelle. :D

par Hywan » 26 juil. 2007, 14:39

Ah bah oui. +1 ;-)

J'ai également regardé sur la documentation, il n'y a rien. C'est étrange, j'aurais juré que ... :)

par Genova » 26 juil. 2007, 14:31

Ben l'UTF8 au lieu que ton char soit sur 1 octet, il pourra par exemple être sur 3 octets, donc la fonction marchera tout de même puisqu'elle traduit la chaîne octet par octet (j'ai fait le test, ça tourne sans soucis).

par Hywan » 26 juil. 2007, 14:21

Le script ne fonctionne que sur 1 octet (mais il est bien :)). Si on est sur un encodage UTF-8, et qu'on écrit en chinois, les caractères peuvent être encodés sur plusieurs octets. En revanche, je ne vois pas comment y trouver une solution. Peut-être faut-il regarder du côté de mb_string ?

par Genova » 26 juil. 2007, 14:04

Bonjour, j'ai pas trouvé de fonction dans la doc PHP permettant de faire du binaire depuis une chaîne de caractère (étonnant, ou bien j'ai mal cherché).

Je t'ai fait des fonctions qui font ce boulot :
<?php

// Converti une string en binaire
function str2bin($str)
{
	$bin = '';
	$length = strlen($str);
	for ($i = 0; $i < $length; $i++)
	{
		// On converti le code ASCII du char en binaire
		$convert = decbin(ord($str[$i]));

		// On complète avec les 0 pour faire 1 octet
		$convert = strrev(str_pad(strrev($convert), 8, '0'));
		$bin .= $convert;
	}
	return ($bin);
}

// Converti du binaire en string
function bin2str($bin)
{
	$str = '';
	$split = str_split($bin, 8);
	$count = count($split);
	for ($i = 0; $i < $count; $i++)
	{
		$str .= chr(bindec($split[$i]));
	}
	return ($str);
}

$str = 'salut';
$bin = str2bin($str);
echo "STR=$str<br />BIN=$bin<br />";
$str = bin2str($bin);
echo "STR=$str<br />";

?>

Conversion en binaire

par t5in9tao » 26 juil. 2007, 13:29

Bonjour,

Je voudrais convertir une chaîne quelconque en binaire. Si c'est possible, je voudrais aussi que cette chaîne puisse ne pas forcément être composée de caractères ASCII, afin de généraliser au maximum.

Merci beaucoup pour votre aide.