Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Битовые поля в PHP
|
|||
|---|---|---|---|
|
#18+
alex564657498765453, По поводу переносимости... Знал это только со слов, так как уже говорил, asp.net ни разу не юзал. Потому решил загуглить... и вот первая же открытая ссылка (кроме тех, где на 10 страницах рассказывается как настроить linux сервер под работу с asp) английское обсуждение (сорри... русского не нашёл) Как видим, в любой момент можно столкнуться с ситуацией, когда написанный на asp.net проект (в windows) не запуститься в linux (так как в линуксе mono поддерживает малую часть функций данного фреймворка) P.S. Не забываем, что mono - это не продукт от майкрософта, а значит можно считать, что .net не переносима на линукс сервер (ведь mono - это бесплатная штука, которую в любой мемент могут перестать разрабатывать и поддерживать и всё :) ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2013, 11:23 |
|
||
|
Битовые поля в PHP
|
|||
|---|---|---|---|
|
#18+
nop. Вопрос заключался в том, есть ли в PHP что-то столь же удобное для работы с битовыми полями как в Си. стольже удобного - НЕТ, но это возможно. но придется многое делать вручную ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2013, 11:39 |
|
||
|
Битовые поля в PHP
|
|||
|---|---|---|---|
|
#18+
nopДа побитовые операции - это понятно. Они где угодно есть. Вопрос заключался в том, есть ли в PHP что-то столь же удобное для работы с битовыми полями как в Си. Насколько мне известно, ничего подобного в php нету... Но учитывая, что размер структуры меньше размера integer: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. В принципе за 5 минут писано... Может где ошибся, не проверял... По аналогии (только легче немного) чтение по маске... Маски предопределяем в классе (для удобства)... и всё. Вот удобный инструмент (ограничивающийся размеров integer). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2013, 12:04 |
|
||
|
Битовые поля в PHP
|
|||
|---|---|---|---|
|
#18+
да... как чувствовал, что ошибся )) написал: Код: php 1. а надо: Код: php 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2013, 13:13 |
|
||
|
Битовые поля в PHP
|
|||
|---|---|---|---|
|
#18+
ПрограмёрnopДа побитовые операции - это понятно. Они где угодно есть. Вопрос заключался в том, есть ли в PHP что-то столь же удобное для работы с битовыми полями как в Си. Насколько мне известно, ничего подобного в php нету... Но учитывая, что размер структуры меньше размера integer: Как меньше? Все битовые поля структуры в сумме занимают 4 байта. Но в принципе не суть. Програмёр Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. В принципе за 5 минут писано... Может где ошибся, не проверял... По аналогии (только легче немного) чтение по маске... Маски предопределяем в классе (для удобства)... и всё. Вот удобный инструмент (ограничивающийся размеров integer). Извиняюсь за нубство (я в основном системный программист и на PHP практически не писал), но можно немного пояснить код? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2013, 11:26 |
|
||
|
Битовые поля в PHP
|
|||
|---|---|---|---|
|
#18+
nopИзвиняюсь за нубство (я в основном системный программист и на PHP практически не писал), но можно немного пояснить код? что именно вам непонятно? ветвление, цикл, операции арифметические,логические, битовые сдвиги... или сам алгоритм? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2013, 11:41 |
|
||
|
Битовые поля в PHP
|
|||
|---|---|---|---|
|
#18+
nopИзвиняюсь за нубство (я в основном системный программист и на PHP практически не писал), но можно немного пояснить код? Хм... Ну каг бы... )) это вообще-то какраз ближе к системному программированию, чем к php (из php тут только синтаксис :) ). Я уже несколько лет в php программирую, но мне только 1 раз приходилось делать подобное. А вот как раз знаю как это делать, потому что в своё время сильно увлёкся asm'ом и за месяц перечитал кучу всякой инфы об низкоуровневой работе с памятью (и многое другое). Алгоритм тут простой: задаём маску для каждого значения в структуре. на вход в функцию получаем число и маску. Потом определяем на сколько бит надо сместить число, которое подали (ведь, если число 0xA9, а маска 0xFF00, то в итоге наше значение должно быть записано как 0xA000). А дальше одной командой очищаем те биты в структуре, которые хотим записать, и выполняем сложение (логическое) с поданным на вход числом, смещённым и пропущенным через маску. Думаю Вы должны понять, по какому принципу я предопределил маски, но если вдруг не понятно - пишите. P.S. в данном случае структура меньше интежера. Тут вся штука в том, что в php тип int подразумевает (по умолчанию, как уже заметили можно и изменить) что-то подобное прикладному longint или даже int64 (не уверен... не проверял размерность никогда... 32bit вполне достаточно было). Так что в данном случае указанная структура легко поместиться в integer. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2013, 12:26 |
|
||
|
Битовые поля в PHP
|
|||
|---|---|---|---|
|
#18+
ведь, если число 0xA9, а маска 0xFF00, то в итоге наше значение должно быть записано как 0xA000 0xA900 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2013, 12:49 |
|
||
|
Битовые поля в PHP
|
|||
|---|---|---|---|
|
#18+
Спасибо, в коде разобрался :) Вроде бы работает как надо (при тестировании, проверял калькулятором), в реальных условиях пока не проверил. ПрограмёрP.S. в данном случае структура меньше интежера. Тут вся штука в том, что в php тип int подразумевает (по умолчанию, как уже заметили можно и изменить) что-то подобное прикладному longint или даже int64 (не уверен... не проверял размерность никогда... 32bit вполне достаточно было). Так что в данном случае указанная структура легко поместиться в integer. А вот этого понять не могу. В вашей же структуре маска 0xFC000000 смещает на последние 6 бит из 32-ух. Соответственно если я по этому смещению запишу 0x3F, то как получившееся число может получиться меньше 4ёх байт? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2013, 15:23 |
|
||
|
Битовые поля в PHP
|
|||
|---|---|---|---|
|
#18+
nop, в моём сообщении "меньше" стоит понимать как "меньше или равно" :) В указанном Вами случае получится заполнение ровно 4-ёх байт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2013, 16:35 |
|
||
|
|

start [/forum/topic.php?fid=23&msg=38296117&tid=1463691]: |
0ms |
get settings: |
4ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
26ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 217ms |
| total: | 323ms |

| 0 / 0 |
