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

Форум PHP

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

 

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

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

тема: Работа с двоичными данными
 
 автор: Artem S.   (13.06.2005 в 08:11)   письмо автору
 
 

Три схожих вопроса
Скрипт получает данные. Нужно
1) Получит данные в двоичной форме, то есть без всяких там преобразований типов.
2) Поменять старшие байты с младшими, то есть получает F8 A2 на выходе A2 F8
3) Разбить число из 6 байт на несколько 2Ah 8Bh СFh на $a = 2Ah $b = 8Bh СFh. Нужен сам принцип.

Пока все. Хотел делать это на c++. Но я не знаю, как там работать с протоколом tcp без MFC или WinAPI (если такое вообще возможно)

   
 
 автор: cheops   (13.06.2005 в 13:27)   письмо автору
 
   для: Artem S.   (13.06.2005 в 08:11)
 

1) Данные как поступают, откуда?
2) Что-то не прпомню в PHP никаких специальных функций для работы с отдельными битами (MySQL и та, обладает гораздо более широкими возможностями). Это нужно делать на PHP или С++.
3) Опять же вопрос, это на каком языке? На С++ это уж больно легко приведением типов осуществить. PHP - слаботипизированный язык но идея состоит в том, чтобы брать двоичную последовательность в виде строки и резать её при помощи обычных строковых функций. Пусть имеется строка $bt из 6 байт, тогда задачу можно решить следующим образом.
<?php
  $a 
substr($bt,0,3);
  
$b substr($bt,4);
?>


PS Для работы с tcp в Windows применяется библиотека WinSock 2 (это WinAPI). Если сможете обязательно достанте "Программирование в сетях Windows" Э. Джонса, Д. Оланда, а так же посетите http://www.firststeps.ru/ NetWork->WIN Socket

   
 
 автор: Artem S.   (13.06.2005 в 13:57)   письмо автору
 
   для: cheops   (13.06.2005 в 13:27)
 

Не думал что так намучаюсь с типами в php...

Хочу сделать два варианта - на "с" и на "php". C приемом данных я, кажется, понял, а вот с отправлением никак не могу. (в php)
Скажем нужно отправить int 0x0001 (0000 0000 0000 0001)
Ничего лучше чем отправит строчку не придумал =(
chr(00).chr(00)........chr(00).chr(01)

Нет никакого другого решения для отправки двоичных данных?

P.S. Если я буду использовать WinSock, я не смогу откомпилировать прогу на сервере с RedHat. Может есть более гибкий метод?

   
 
 автор: cheops   (13.06.2005 в 18:48)   письмо автору
 
   для: Artem S.   (13.06.2005 в 13:57)
 

И вряд ли, что-то лучшее придумаете... А куда отправляете?

PS TCP всегда реализуется на уровне операционной системы, в Windows - WinSock, в RedHat - сокеты Беркли... Чёрт... была недавно в продаже книжка толстая-претолстая с тёмно-зелённой обложкой... у меня сейчас под рукой её нет, а название из головы вылетело. В любом случае написать код, который работал бы в обеих операционных системах на С++ вряд ли получиться, если только не разрабатывать библиотеку-обёртку для каждой из операционных систем, а в приложении пользоваться интерфейсом этой библиотеки.

   
 
 автор: Artem S.   (13.06.2005 в 20:22)   письмо автору
 
   для: cheops   (13.06.2005 в 18:48)
 

>> А куда отправляете?
Конекчусь к серверу ICQ =) Была тут моя тема про протокол, спрашивал....
Ну в общем залогонится получилось, осталось научится данные обрабатывать =)

   
Rambler's Top100
вверх

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