Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Битовые поля в PHP
|
|||
|---|---|---|---|
|
#18+
В PHP я новичёк и нагуглить по этой теме ничего не смог. Изначально у меня есть набор цифр известного максимального размера (в битах), которые нужно упаковать в 4 байта (dword). В С++ это было проще простого, за счёт возможности создания структур с битовыми полями. Например: typedef struct { unsigned int a: 4; unsigned int b: 16; unsigned int c: 4; unsigned int d: 2; unsigned int e: 6; } myDwordVariable; В итоге имею прямой доступ к каждому полю без всяких там математических операторов. В PHP я такого не нашёл :( Подскажите пожалуйста наиболее удобный для моих целей вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2013, 16:48 |
|
||
|
Битовые поля в PHP
|
|||
|---|---|---|---|
|
#18+
авторабор цифр известного максимального размера (в битах), что что есть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2013, 17:11 |
|
||
|
Битовые поля в PHP
|
|||
|---|---|---|---|
|
#18+
nopВ PHP я новичёк и нагуглить по этой теме ничего не смог. Изначально у меня есть набор цифр известного максимального размера (в битах), которые нужно упаковать в 4 байта (dword). В С++ это было проще простого, за счёт возможности создания структур с битовыми полями. Например: typedef struct { unsigned int a: 4; unsigned int b: 16; unsigned int c: 4; unsigned int d: 2; unsigned int e: 6; } myDwordVariable; В итоге имею прямой доступ к каждому полю без всяких там математических операторов. В PHP я такого не нашёл :( Подскажите пожалуйста наиболее удобный для моих целей вариант. мне этот факт стал интересен, спасибо, не знал что такое бывает. НО... Для чего Вам это... тем более в php? просто интересно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2013, 19:03 |
|
||
|
Битовые поля в PHP
|
|||
|---|---|---|---|
|
#18+
nopВ PHP я новичёк и нагуглить по этой теме ничего не смог. Изначально у меня есть набор цифр известного максимального размера (в битах), которые нужно упаковать в 4 байта (dword). В С++ это было проще простого, за счёт возможности создания структур с битовыми полями. Например: typedef struct { unsigned int a: 4; unsigned int b: 16; unsigned int c: 4; unsigned int d: 2; unsigned int e: 6; } myDwordVariable; В итоге имею прямой доступ к каждому полю без всяких там математических операторов. В PHP я такого не нашёл :( Подскажите пожалуйста наиболее удобный для моих целей вариант. математические преобразования есть всегда. комьютер не понимает бита, сам проц вообщемто и байта не понимает. просто ты не делал этих операций. в пхп нету. вишь пхп гуру даже не знают что это такое. изобретай свой код... побитовые операции и битовый сдвиг есть. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2013, 20:34 |
|
||
|
Битовые поля в PHP
|
|||
|---|---|---|---|
|
#18+
alex564657498765453nopВ PHP я новичёк и нагуглить по этой теме ничего не смог. Изначально у меня есть набор цифр известного максимального размера (в битах), которые нужно упаковать в 4 байта (dword). В С++ это было проще простого, за счёт возможности создания структур с битовыми полями. Например: typedef struct { unsigned int a: 4; unsigned int b: 16; unsigned int c: 4; unsigned int d: 2; unsigned int e: 6; } myDwordVariable; В итоге имею прямой доступ к каждому полю без всяких там математических операторов. В PHP я такого не нашёл :( Подскажите пожалуйста наиболее удобный для моих целей вариант. математические преобразования есть всегда. комьютер не понимает бита, сам проц вообщемто и байта не понимает. просто ты не делал этих операций. в пхп нету. вишь пхп гуру даже не знают что это такое. изобретай свой код... побитовые операции и битовый сдвиг есть. :) Ну, это то да. Но учитывая, что такая структура хранения данных сказывается на производительности, думаю является логичным отсутствие данной возможности в php. Серверные технологии рассчитаны на большие нагрузки, а значит наклон идёт на увеличение производительности. По-этому я и спросил, я зачем это может потребоваться на php? Сервера не страдают от недостатка оперативки обычно, а значит и экономить, и вместо 16 бит тиснуться в 14 нету смысла :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2013, 21:52 |
|
||
|
Битовые поля в PHP
|
|||
|---|---|---|---|
|
#18+
Програмёрalex564657498765453пропущено... математические преобразования есть всегда. комьютер не понимает бита, сам проц вообщемто и байта не понимает. просто ты не делал этих операций. в пхп нету. вишь пхп гуру даже не знают что это такое. изобретай свой код... побитовые операции и битовый сдвиг есть. :) Ну, это то да. Но учитывая, что такая структура хранения данных сказывается на производительности, думаю является логичным отсутствие данной возможности в php. Серверные технологии рассчитаны на большие нагрузки, а значит наклон идёт на увеличение производительности. По-этому я и спросил, я зачем это может потребоваться на php? Сервера не страдают от недостатка оперативки обычно, а значит и экономить, и вместо 16 бит тиснуться в 14 нету смысла :) ерунду написал. и нащот памяти, и нащот производительности. нащот памяти - а сегодня все компьютеры не страдают нехваткой оперативки чтоб два бита экономить. там где язык интерпретируемый, уже вопрос о производительности кода не стоит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2013, 00:37 |
|
||
|
Битовые поля в PHP
|
|||
|---|---|---|---|
|
#18+
nopВ PHP я новичёк и нагуглить по этой теме ничего не смог. Изначально у меня есть набор цифр известного максимального размера (в битах), которые нужно упаковать в 4 байта (dword). В С++ это было проще простого, за счёт возможности создания структур с битовыми полями. Например: typedef struct { unsigned int a: 4; unsigned int b: 16; unsigned int c: 4; unsigned int d: 2; unsigned int e: 6; } myDwordVariable; В итоге имею прямой доступ к каждому полю без всяких там математических операторов. В PHP я такого не нашёл :( Подскажите пожалуйста наиболее удобный для моих целей вариант. кстате учти ж. в пхп один целочисленый тип - интежер. а он может быть и 64 бита, и на сервере скорей всего так и есть. :) так что будешь баловаться таким образом - обязательно надо чтоб код определял разрядность микропроцессора. Но в пхп ини можно задавать разрядность интеджера. Так что лучше всего определять по типу если 0xFF+1 < 0xFF - 8bit tckb 0xFFFF+1 < 0xFFFF - 16bit etc ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2013, 00:43 |
|
||
|
Битовые поля в PHP
|
|||
|---|---|---|---|
|
#18+
alex564657498765453, Интерпретация кода, вместо компиляции - это уже другое. Это политика openSource. Помню раньше читал, что собрались классные и умные человечки, и решили, что весь вэб будет на открытых кодах, что бы его было легко править, что бы он был передаваем (так как мало компаний пишут сайт и поддерживают его до последнего, а тем более частники). Но потом пришёл дядя Билл и сказал (как всегда впрочем) "да ну нафиг ваш стандарт" (эм... ну не так конечно, но смысл именно такой). И внедрил в вэб свою платформу ASP.NET, которая является компилируемой. Быстродейственной, но менее удобной для редактирования (не в плане кода, а в плане подготовки к редактированию и требующей установки платного продукта) и неперносимой на некоторые системы (ну или сложно переносимой... логично, ведь компилируемся :) ) Вот так. Так что интерпретация кода вместо его компиляции - это другой вопрос, обусловленный другими аспектами. Вынужденная потеря скорости. В плане же ресурсоёмкости и производительности, уклон делается на производительность, так как винчестера, оперативки у серверов сейчас "ё-маё" :) P.S. не в обиду тем, кто пишет на .NET, сейчас это тоже уже стандарт многими уважаем. Просто вот так всё было (по тем данным, которые попадались мне). Привёл в пример NET только для того, что бы показать обоснованность принятия решения интерпретации кода на сервере. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2013, 00:56 |
|
||
|
Битовые поля в PHP
|
|||
|---|---|---|---|
|
#18+
авторASP.NET, которая является компилируемой. Эм? а дядя билл про это знает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2013, 01:34 |
|
||
|
Битовые поля в PHP
|
|||
|---|---|---|---|
|
#18+
ScareCrowавторASP.NET, которая является компилируемой. Эм? а дядя билл про это знает? думаю знает тынц ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2013, 01:42 |
|
||
|
Битовые поля в PHP
|
|||
|---|---|---|---|
|
#18+
и вы там ТОЧНО дальше первой строчки читали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2013, 01:48 |
|
||
|
Битовые поля в PHP
|
|||
|---|---|---|---|
|
#18+
ScareCrow, да, конечно читал. Объясните пожалуйста что не так говорю (исходя из данных в данной статье)... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2013, 01:52 |
|
||
|
Битовые поля в PHP
|
|||
|---|---|---|---|
|
#18+
тогда расскажите как у меня без всякой компиляции в DLL работает сайт? вот напрмер код главной: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. 239. 240. 241. 242. 243. 244. 245. 246. 247. 248. 249. 250. 251. 252. 253. 254. 255. 256. 257. 258. 259. 260. 261. 262. 263. 264. 265. 266. 267. 268. 269. 270. 271. 272. 273. 274. 275. 276. 277. 278. 279. 280. 281. 282. 283. 284. 285. 286. 287. 288. 289. 290. 291. 292. 293. 294. 295. 296. 297. 298. 299. 300. 301. 302. 303. 304. 305. 306. 307. 308. 309. 310. 311. 312. 313. 314. 315. 316. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2013, 01:56 |
|
||
|
Битовые поля в PHP
|
|||
|---|---|---|---|
|
#18+
вот прям так и работает, из текстовика, как PHP ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2013, 01:57 |
|
||
|
Битовые поля в PHP
|
|||
|---|---|---|---|
|
#18+
ScareCrowвот прям так и работает, из текстовика, как PHP А Вы после изменения 1 буковки кода попробуйте зайти на сайт. Первый заход будет занимать больше времени, чем последующие. Это и будет компиляция кода сайта. Просто там код компилируется не программистом вручную, а автоматом при первом запуске. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2013, 02:01 |
|
||
|
Битовые поля в PHP
|
|||
|---|---|---|---|
|
#18+
Кстати, процедуру первого запуска видел лично, так как на смену мне в компанию, где я работал, пригласили программиста на NET платформу (хотели на php продолжить, но он реально классно шарит, по-этому решили с ним попробовать). Так вот, он мне лично показывал как это всё работает и объяснял, почему так долго запускается первый раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2013, 02:04 |
|
||
|
Битовые поля в PHP
|
|||
|---|---|---|---|
|
#18+
так, с открытыми кодами разобрались. оказывается в самом что ни на есть пропиетарном Микрософте самые что ни на есть открыты коды. с компиляцией сами почитаете или тоже разберем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2013, 02:09 |
|
||
|
Битовые поля в PHP
|
|||
|---|---|---|---|
|
#18+
ScareCrow, К сожалению уже с телефона, потому пока отвечать не буду на прошлое сообщение, так как сложно аргументировать не давая ссылок нормальных. А вот по поводу компиляции, с радостью почитал бы Ваши доводы (по формулировке понимаю, что хотите поспорить) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2013, 02:27 |
|
||
|
Битовые поля в PHP
|
|||
|---|---|---|---|
|
#18+
быстро ты слился ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2013, 02:31 |
|
||
|
Битовые поля в PHP
|
|||
|---|---|---|---|
|
#18+
ScareCrow, Ну так ответь. Я то утром аргументы то подкачу свои. Не знаю как там у Вас, а тут в Москве 2.40 однако :). С чего мне ещё в такое время как не с телефона сидеть? Выпучив глаза перед компом? Нее. Явно не для меня. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2013, 02:39 |
|
||
|
Битовые поля в PHP
|
|||
|---|---|---|---|
|
#18+
ScareCrowтак, с открытыми кодами разобрались. оказывается в самом что ни на есть пропиетарном Микрософте самые что ни на есть открыты коды. с компиляцией сами почитаете или тоже разберем? Итак, с открытыми кодами и компиляцией... Надеюсь английский знаем... Итак, ссылки: общие положения публикации сайтов на asp.net возможные варианты публикации сайтов на asp.net не просто откуда-то, а с оригинального сайта msdn.microsoft.com. Так Вот, давайте обсудим официальные ссылки, документации к продукту... а то "у меня" - это не дело... ))) Вы могли просто сайт публиковать вместе с кодами (читаем... там есть такая возможность). Очень хочу увидить, что на это ответите... Вы вывели какую-то непонятную "истину" и обвинили меня в неправоте, даже не почитав ссылку видимо (где несколько раз повторяется, что код не является открытым и что он компилируется). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2013, 08:17 |
|
||
|
Битовые поля в PHP
|
|||
|---|---|---|---|
|
#18+
nopВ PHP я новичёк и нагуглить по этой теме ничего не смог. а что там гуглить? открываем доку поддерживаемых типов и видим, что пхп поддерживает а что нет если прочитаете ссылку выше, то поймете что dword как тип пхп неподдерживает. но. если нельзя но очень хочется - то можно. битовые сдвиги есть, для упаковки читаем про функции pack() / unpack() флаг L и т.д. можно написать свой класс, который будет на лету это делать, либо поищите готовый, может уже ктото реализовал, может даже в виде расширения к пхп... а вообще пхп высокоуровневый язык, если вы успели заметить, и он не особо заточен для работы напрямую с битами. но коечто делать позволяет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2013, 05:51 |
|
||
|
Битовые поля в PHP
|
|||
|---|---|---|---|
|
#18+
r u, поддержу. Есть все побитовые операции. Там даже отдельного класса генерить особо и не надо, а зачастую и не требуется. По-поводу "ненужной экономии двух байт": не соглашусь. "Копейка - рупь бережет". На серверах, из-за такого подхода, как правило мозгов не хватает уже при мало-мальски серъезной нагрузке. Ни при какой оперативе. Это большой миф Г-кодеров в своё оправдание. Как пример: побайтное хранение каких=нибудь "статусов" - можно в БД выделить тип boolean или что ещё в один байт. Казалось бы "нафига экономить" и лепить побитовые операции? Однако: при количестве статусов, хотя бы 8 штук, имеем 8 полей. Как правило "статус" - это такая фигня, которая часто ограничивает условия выборки (и отдай мне те, которые ещё не проверены, или ещё не удалены и т.п.)... но на 8 полей, уже приходится накладывать индекс на каждое(!) поле, что уже далеко не один байт на поле... ... и это как ни странно, только "начало": далее надо усложнять запросы, добавляя условия по И/ИЛИ на каждое отдельное поле... удлинять ширину выборки (несколько полей), что уже "внезапно" значительно снижает скорость отдачи (даже по внутреннеей петле сетевого интерфейса - он все равно используется и яваляется самым узким местом в связках "БД - клиент"), усложнять логику клиента, поскольку результат - уже несколько полей объекта "Запись" к примеру и проверки надо вести также расширяя код по И/ИЛИ... а, учитывая что ПХП выделяет память блоками по килобайту и более... рост потребляемой памяти может и вовсе оказаться несоизмеримым. ... в то же время, хранение битовым набором - поддерживается большинством БД (даже в Мускуле есть тип данных set - до 64 бит, а в varbinary - ваще можно "скока угодно"), и "сложность" задачи - это просто банальное незнание и нежедлание узнать работу с битовыми операциями и логическими выражениями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2013, 08:37 |
|
||
|
Битовые поля в PHP
|
|||
|---|---|---|---|
|
#18+
Програмёрalex564657498765453, Интерпретация кода, вместо компиляции - это уже другое. Это политика openSource. Помню раньше читал, что собрались классные и умные человечки, и решили, что весь вэб будет на открытых кодах, что бы его было легко править, что бы он был передаваем (так как мало компаний пишут сайт и поддерживают его до последнего, а тем более частники). Но потом пришёл дядя Билл и сказал (как всегда впрочем) "да ну нафиг ваш стандарт" (эм... ну не так конечно, но смысл именно такой). И внедрил в вэб свою платформу ASP.NET, которая является компилируемой. Быстродейственной, но менее удобной для редактирования (не в плане кода, а в плане подготовки к редактированию и требующей установки платного продукта) и неперносимой на некоторые системы (ну или сложно переносимой... логично, ведь компилируемся :) ) Вот так. Так что интерпретация кода вместо его компиляции - это другой вопрос, обусловленный другими аспектами. Вынужденная потеря скорости. В плане же ресурсоёмкости и производительности, уклон делается на производительность, так как винчестера, оперативки у серверов сейчас "ё-маё" :) P.S. не в обиду тем, кто пишет на .NET, сейчас это тоже уже стандарт многими уважаем. Просто вот так всё было (по тем данным, которые попадались мне). Привёл в пример NET только для того, что бы показать обоснованность принятия решения интерпретации кода на сервере. да какая нафиг переносимость. исходни если есть то и в перёд, а если нету..ну так наврено нельзя переносить куда хочеться - это чьёто. а вот что для опенсорса это полезно, то да... ибо ктото может начинать распространять скомпиленый без исходников...и вроде опен сорс, можешь делать что хочешь, ну или с ошибками исходники... а реально совершенно левые смогут на себя тянуть одеяло.. так что нащот переносимости не соглашуссь, а вот опенсорс - поддержвию :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2013, 10:21 |
|
||
|
Битовые поля в PHP
|
|||
|---|---|---|---|
|
#18+
ПрограмёрПо-этому я и спросил, я зачем это может потребоваться на php? Сервера не страдают от недостатка оперативки обычно, а значит и экономить, и вместо 16 бит тиснуться в 14 нету смысла :) Вопрос не в экономии. Веб-приложение должно по определённым правилам генерить 4-ёх байтовый номер для устройства, в который должны быть заложены некоторые его параметры. Параметров 6, при этом разных размеров, и без разбиения по битам их в 4 байта не вставить ) Arhat109r u, поддержу. Есть все побитовые операции. Там даже отдельного класса генерить особо и не надо, а зачастую и не требуется. Да побитовые операции - это понятно. Они где угодно есть. Вопрос заключался в том, есть ли в PHP что-то столь же удобное для работы с битовыми полями как в Си. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2013, 11:13 |
|
||
|
|

start [/forum/topic.php?fid=23&msg=38294836&tid=1463691]: |
0ms |
get settings: |
8ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
33ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
75ms |
get tp. blocked users: |
2ms |
| others: | 232ms |
| total: | 387ms |

| 0 / 0 |
