powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Два вопроса по синтаксису PHP
19 сообщений из 19, страница 1 из 1
Два вопроса по синтаксису PHP
    #39165544
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос простой
Почему код
Код: php
1.
2.
3.
4.
5.
$byte = fread($file,1);
if($byte == 0x43)
{
  ...
}


не срабатывает, а код
Код: php
1.
2.
3.
4.
5.
$byte = fread($file,1);
if($byte == 'C')
{
  ...
}



срабатывает, хотя С это 0x43.

Вопрос второй - как считать из файла тип LONG?
Если я делаю

Код: php
1.
$long = fread($file,4);


то байты идут в обратном порядке, так как они записаны в файле. А нужно наоборот.
...
Рейтинг: 0 / 0
Два вопроса по синтаксису PHP
    #39165652
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор С это 0x43.
var_dump($byte);
...
Рейтинг: 0 / 0
Два вопроса по синтаксису PHP
    #39165852
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScareCrow, спасибо!
...
Рейтинг: 0 / 0
Два вопроса по синтаксису PHP
    #39165871
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А насчет чтения LONG?
...
Рейтинг: 0 / 0
Два вопроса по синтаксису PHP
    #39165912
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScareCrowавтор С это 0x43.
var_dump($byte);

так?
Код: php
1.
var_dump($byte) == 0x43


не работает!
...
Рейтинг: 0 / 0
Два вопроса по синтаксису PHP
    #39166022
MikkiMouse
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL2008,

SQL2008не работает!

Чего именно не делает?
...
Рейтинг: 0 / 0
Два вопроса по синтаксису PHP
    #39166176
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MikkiMouseSQL2008,

SQL2008не работает!

Чего именно не делает?
Не сравнивает два значения.
Хотел бы привести значение байта к виду 0x43, а не к тексту 'C'.
...
Рейтинг: 0 / 0
Два вопроса по синтаксису PHP
    #39166182
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL2008,

if ( $byte == chr(0x43) )
...
Рейтинг: 0 / 0
Два вопроса по синтаксису PHP
    #39166195
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
r uSQL2008,

if ( $byte == chr(0x43) )
Короче ерунда. Ничем не лучше
Код: php
1.
if($byte == 'C')


А как быть, например с таким значением
Код: php
1.
if($byte == chr(0xFF))


К какому символу он будет приведен?

Вопрос про чтение LONG остается в силе.
...
Рейтинг: 0 / 0
Два вопроса по синтаксису PHP
    #39166202
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL2008Короче ерунда. Ничем не лучше
так а что нужно то?
0x43 это просто число 67. написанное в шестнадцатеричной форме. естественно что число неравно строковому символу.
0xFF это число 255.

про лонг. если нужно в обратном. так переверни. в чем проблема?
...
Рейтинг: 0 / 0
Два вопроса по синтаксису PHP
    #39166218
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
r uSQL2008Короче ерунда. Ничем не лучше
так а что нужно то?
0x43 это просто число 67. написанное в шестнадцатеричной форме. естественно что число неравно строковому символу.
0xFF это число 255.

в чем проблема?
И в самом деле проблема. Причем на ровном месте.
Также при операциях сравнения используется действительное значение, а не её представление символьное, десятичное и пр.
это все работает
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
int byte = 0x43;

if(byte == 0x43) { ... }

if(byte == 67) { ... }

if(byte == 'C') { ... }



r u про лонг. если нужно в обратном. так переверни.
В С++ просто читаешь из файла в переменную определенного типа и не паришься с перевертыванием.
Даже боюсь представить как на PHP будет реализован такой алгоритм
Код: plaintext
1.
2.
3.
4.
DWORD src,dst;
src = 0x30000000;

dst = ((src>>24)&0x000000FF) | ((src>>8)&0x0000FF00) | ((src<<8)&0x00FF0000) | ((src<<24)&0xFF000000);


Подозреваю, что без pack(...) и unpack(...) не обойтись.
...
Рейтинг: 0 / 0
Два вопроса по синтаксису PHP
    #39166230
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL2008Даже боюсь представить как на PHP будет реализован такой алгоритм
да тоже самое
Код: php
1.
2.
$src = 0x30000000;
$dst = (($src>>24)&0x000000FF) | (($src>>8)&0x0000FF00) | (($src<<8)&0x00FF0000) | (($src<<24)&0xFF000000);
...
Рейтинг: 0 / 0
Два вопроса по синтаксису PHP
    #39166235
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
r u, ну слава богу! Хоть что-то привычное.
Спасибо и извини за эмоции.
...
Рейтинг: 0 / 0
Два вопроса по синтаксису PHP
    #39166237
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL2008это все работает
неправда
так не сработает:
Код: php
1.
2.
$byte = 0x43;
if($byte == 'C') {
...
Рейтинг: 0 / 0
Два вопроса по синтаксису PHP
    #39166276
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
r uSQL2008это все работает
неправда
так не сработает:
Код: php
1.
2.
$byte = 0x43;
if($byte == 'C') {



Я говорил про

Код: php
1.
2.
3.
4.
5.
$byte = fread($file,1);
if($byte == 0x43)
{
  ...
}



Где байт, считанный из файла равняется 0x43.
...
Рейтинг: 0 / 0
Два вопроса по синтаксису PHP
    #39166303
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ничего, что fread() возвращает строку, которую пытаетесь сравнить с числом без явных преобразований? Неявные преобразования не всегда работают как хочется.
...
Рейтинг: 0 / 0
Два вопроса по синтаксису PHP
    #39166591
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkleА ничего, что fread() возвращает строку, которую пытаетесь сравнить с числом без явных преобразований? Неявные преобразования не всегда работают как хочется.
Вот этого я как раз и не знал.
А есть функция чтения AS IS, без всяких преобразований?
...
Рейтинг: 0 / 0
Два вопроса по синтаксису PHP
    #39166619
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL2008,

Да читается то и так как есть (вот насчёт байта 00 не уверен). Трактуется прочитанное как строка. В некоторых случаях при использовании данных (сложение, например) строка может быть неявно преобразована в число. При необходимости можно явно преобразовать к другому типу данных . Хотите как число с числом сравнивать - преобразуйте прочитанную строку в число перед сравнением.
...
Рейтинг: 0 / 0
Два вопроса по синтаксису PHP
    #39166630
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL2008AS IS
нет такого типа данных. нужно определиться с тем что нужно и сделать необходимые преобразования.
и все.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Два вопроса по синтаксису PHP
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]