Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Очень глупый вопрос: php цифры и четыре байта
 
 автор: Красная_шляпа   (23.01.2010 в 22:35)   письмо автору
 
 

Значит вопрос на засыпку число занимает 4 байта. У меня есть файл и туда я собираюсь записывать числа. Мне нужно записать число в виде 4 символов(по 4 байта из файла читать удобнее). Вот как 1.000.000 например превратить в строку из 4 символов?

  Ответить  
 
 автор: ~AquaZ~   (23.01.2010 в 22:45)   письмо автору
 
   для: Красная_шляпа   (23.01.2010 в 22:35)
 

1.000.000 == 0x00 0F 42 40. Вот алгоритм:
<?
function int2txt(int $n)
{
   
$n dechex($n);
   while (
strlen($n) < 8)
      
$n .= '0';
   return 
chr(hexdec($n[0].$n[1])).chr(hexdec($n[2].$n[3])).chr(hexdec($n[4].$n[5])).chr(hexdec($n[6].$n[7]));
}
И обратно:
<?
function txt2int(string $t)
{
   while (
strlen($n) < 8)
   return (int)((string)
ord($t[0]).(string)ord($t[1]).(string)ord($t[2]).(string)ord($t[3]))
}
Должно работать.

  Ответить  
 
 автор: sim5   (23.01.2010 в 22:52)   письмо автору
 
   для: ~AquaZ~   (23.01.2010 в 22:45)
 

А number_format не хватит разве?

  Ответить  
 
 автор: ~AquaZ~   (23.01.2010 в 22:57)   письмо автору
 
   для: sim5   (23.01.2010 в 22:52)
 

ОЙ у меня ошибка!!! Вот правильно:
function txt2int(string $t)
{
   return (int)((string)ord($t[0]).(string)ord($t[1]).(string)ord($t[2]).(string)ord($t[3]));
}
А number_format вообще другим занимается.

  Ответить  
 
 автор: sim5   (23.01.2010 в 23:48)   письмо автору
 
   для: ~AquaZ~   (23.01.2010 в 22:57)
 

Да?! И чем же оно занимается?
<?
$n 
1000000;
echo 
number_format($n,0,'','.');


PS. Да, признаю, это я "задом наперед" вопрос прочитал видимо. )

  Ответить  
 
 автор: Саня   (24.01.2010 в 00:07)   письмо автору
 
   для: Красная_шляпа   (23.01.2010 в 22:35)
 

Для таких задач используется функция pack:
<?
$ulong4b 
pack('L'1000000);

  Ответить  
 
 автор: Красная_шляпа   (24.01.2010 в 11:15)   письмо автору
 
   для: Саня   (24.01.2010 в 00:07)
 

Спасибо

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования