show me the money
С нами с 18.02.03
Сообщения: 1598
Рейтинг: 263
|
Добавлено: 29/11/06 в 10:18 |
Как число в PHP записать как строку из 4 байт?
Сохранять хочу числа в файлах не как строки "1234" которая занимает 4 байта, а как нормальную последовательность из 4 байтов, эквивалентную типу Integer, которая не ограничивается числом "9999" а 4-мя миллиардами.
Как это в PHP делается?
|
|
|
|
www.awm-tools.com
С нами с 28.01.04
Сообщения: 2941
Рейтинг: 3056
|
Добавлено: 29/11/06 в 10:23 |
Раскладывай на 4е разряда и пиши в файл через функцию chr()
|
|
|
|
С нами с 01.12.05
Сообщения: 339
Рейтинг: 248
|
Добавлено: 29/11/06 в 10:29 |
f_write($pf,(int) $val);
по идее
|
|
|
|
show me the money
С нами с 18.02.03
Сообщения: 1598
Рейтинг: 263
|
Добавлено: 29/11/06 в 10:33 |
Код: | f_write($pf,(int) $val);
по идее |
Если бы всё так просто было.
PHP в файл только символы что ли писать может?
|
|
|
|
show me the money
С нами с 18.02.03
Сообщения: 1598
Рейтинг: 263
|
Добавлено: 29/11/06 в 10:35 |
A d u l t писал: | Раскладывай на 4е разряда и пиши в файл через функцию chr() |
Это мороки сколько с разбиением. А встроенных функций нет для этого?
|
|
|
|
www.awm-tools.com
С нами с 28.01.04
Сообщения: 2941
Рейтинг: 3056
|
Добавлено: 29/11/06 в 10:37 |
clever писал: | Это мороки сколько с разбиением. А встроенных функций нет для этого? |
Напиши свою
|
|
|
|
С нами с 01.12.05
Сообщения: 339
Рейтинг: 248
|
Добавлено: 29/11/06 в 10:37 |
по моему Php рабоатет только со строками
но заставить читать/писать бинарные файлы можно с помощью модификаторов (int) (float) и т.д.
щас гуру придут и скажут )))
|
|
|
|
С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010
|
Добавлено: 29/11/06 в 10:59 |
|
|
|
|
С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010
|
Добавлено: 29/11/06 в 11:00 |
...
|
|
|
|
show me the money
С нами с 18.02.03
Сообщения: 1598
Рейтинг: 263
|
Добавлено: 29/11/06 в 11:11 |
Не поможет, мне нужно строку получить равноценную числу, а не двочичный код.
|
|
|
|
С нами с 06.03.03
Сообщения: 1650
Рейтинг: 1096
|
Добавлено: 29/11/06 в 11:39 |
а вот нельзя такое средствами пхп. и про модификаторы - это бред. чтобы это понять - возьмите объявление функции fwrite которая производит запись в файл:
Код: | int fwrite ( resource handle, string string [, int length]) |
т.е. какие бы конструкции вы не передавали во втором параметре (типа (int) $val) все равно они будут преобразованы в string. поэтому для того чтобы выполнить такую задачу нужно минимум написать функцию кодирования/декодирования. и в любом случае результат функции кодирования должен быть строкой. Исходное число нужно будет разбить на составляющие байты (руками), а потом представить что эти числа - asc коды, и выполнить обратное преобразование типа chr($byte[0]).chr($byte[1]).chr(....).
|
|
|
|
show me the money
С нами с 18.02.03
Сообщения: 1598
Рейтинг: 263
|
Добавлено: 29/11/06 в 12:44 |
webboxxx писал: | и в любом случае результат функции кодирования должен быть строкой. Исходное число нужно будет разбить на составляющие байты (руками), а потом представить что эти числа - asc коды, и выполнить обратное преобразование типа chr($byte[0]).chr($byte[1]).chr(....). |
Нда, намутили товарищи разработчики.
|
|
|
|
С нами с 19.03.04
Сообщения: 301
Рейтинг: 350
|
Добавлено: 30/11/06 в 13:09 |
Код: |
if(!function_exists('file_put_contents')) {
function file_put_contents($filename, $data, $file_append = false) {
$fp = fopen($filename, (!$file_append ? 'w+' : 'a+'));
if(!$fp) {
trigger_error('file_put_contents cannot write in file.', E_USER_ERROR);
return false;
}
fputs($fp, $data);
fclose($fp);
return true;
}
}
$data = 1234567890;
echo 'Number to write: '.$data.'<br>';
file_put_contents('file_1.txt',$data);
echo 'file_1.txt: '.filesize('file_1.txt').' bytes<br>';
file_put_contents('file_2.txt',pack('L',$data));
echo 'file_2.txt: '.filesize('file_2.txt').' bytes<br>';
$fc = unpack('L',file_get_contents('file_2.txt'));
echo 'unpacked: '.$fc[1];
?>
|
Цитата: | Number to write: 1234567890
file_1.txt: 10 bytes
file_2.txt: 4 bytes
unpacked: 1234567890 |
|
|
На детсадовские утренники я одевался белочкой. Дохлой.
|
4
|
|
|
show me the money
С нами с 18.02.03
Сообщения: 1598
Рейтинг: 263
|
Добавлено: 30/11/06 в 15:45 |
Farik'у респект!
Остальным бегом штудировать мануал.
|
|
|
|