Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 07.09.2011
Сообщений: 13

В переменную типа integer прочитать число длиною в 4 байта

19.10.2012, 11:52. Показов 2744. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Кто чем может, помогите разобраться.

Решил разобраться с изображениями (пока формат bmp), не использую стандартные функции из библиотеки GD. Все делаю вручную: открываю и пытаюсь анализировать заголовки с полезной информацией, например, ширина и высота изображения. В формате bmp ширина изображения указана с 18-го байта. Поле длинною в 4 байта. Как мне прочитать эти 4 байта как одно целое? могу продемонстрировать велосипед, который я придумал, но одним местом чувствую, что можно все реализовать намного эффективнее. Итак, велосипед
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function imageSize($cont) {
    $a = array();
    //получаю каждый байт, беру его код и перевожу в двоичное представление
    $f1 = decbin(ord(substr($cont,18,1)));
    $f2 = decbin(ord(substr($cont,19,1)));
    $f3 = decbin(ord(substr($cont,20,1)));
    $f4 = decbin(ord(substr($cont,21,1)));
    
    //складываю все двоичные представления в одно целое и беру значение
    $a[0] = bindec($f4.$f3.$f2.$f1); // X
    
    $f1 = decbin(ord(substr($cont,22,1)));
    $f2 = decbin(ord(substr($cont,23,1)));
    $f3 = decbin(ord(substr($cont,24,1)));
    $f4 = decbin(ord(substr($cont,25,1)));
    
    $a[1] = bindec($f4.$f3.$f2.$f1); // Y
    return $a;
}
Как этот велосипед превратить в гениальное и простое? Спасибо за внимание.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.10.2012, 11:52
Ответы с готовыми решениями:

Сформировать в переменной B типа Integer переменную А, прочитанную как число
Сформировать случайным образом переменную A типа String, состоящую из 8 цифр. Сформировать в переменной B типа Integer переменную А,...

Как правильно записать в поле типа Число переменную с тип данных integer?
Доброго времени суток! Помогите, пожалуйста. Есть 2 поля в таблице: первое -Текст, второе -Число. Пытаюсь их заполнить через Insert...

Перенос значения переменной типа Real в переменную типа Integer
Как сделать так чтобы переменная типа integer приняло число которое было в переменной типа real???

5
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
19.10.2012, 12:45
Может поможет http://www.php.net/manual/ru/function.unpack.php

Добавлено через 28 минут
PHP
1
2
3
4
5
6
<?php
$str = file_get_contents('1.bmp');
 
$bmp_header = unpack('isize/lwidth/lheight/splanes/sbitcount', substr($str, 14, 20));
 
var_dump($bmp_header);
вот пример получения из заголовка изображения первых 5 параметров: size, width, height, planes, bit count
1
0 / 0 / 0
Регистрация: 07.09.2011
Сообщений: 13
19.10.2012, 14:33  [ТС]
Спасибо, штука толковая, то что надо
Скажите, а Вы не знаете как она работает? Я имею ввиду, как она определяет, сколько байт нужно взять на значение каждого поля? Вот например, ширина и высота - по 4 байта, а количество плоскостей и скоко бит изображение - по 2 байта. Как она определяет? Ведь мы то ей скармливаем просто строку...
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
19.10.2012, 14:38
isize/lwidth/lheight/splanes/sbitcount
тут же указаны типы данных.
1
0 / 0 / 0
Регистрация: 07.09.2011
Сообщений: 13
19.10.2012, 15:27  [ТС]
тоесть, выходя из того, сколько каждый тип берет памяти, так и расставляем (если нужно 4 взять - берем integer, если 2 - string)? выходит так?
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
19.10.2012, 15:30
не стринг а шорт
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.10.2012, 15:30
Помогаю со студенческими работами здесь

Предположим, что переменная типа CHAR занимает 1 байт, переменная типа INTEGER занимает два байта
Предположим, что переменная типа CHAR занимает 1 байт, переменная типа INTEGER занимает два байта, а переменная типа REAL занимает 4 байта....

Чем можно прочитать файл записей типа integer
Чтобы не делать себе вьювер. Не читает worldpad, там число 4 записано. И не передает файл этот драный билайн по беспроводу. 40 килобайт...

Прочитать 4 байта как вещественное число с плавающей точкой
Всем здравствуйте. имеется байтовый массив из четырёх байт как прочитать его как одно значение типа Single схожая задача имеется...

Прочитать файл типа Integer, и вычислить сумму его элементов
10. Создать файл, состоящий из 10 значений типа integer. Прочитать файл и вычислить сумму его элементов. Вроде все правильно, но...

Как преобразовать переменную типа integer в string
Приветствую! Объясните как преобразовать переменную типа integer в string. Если не трудно распишите, что за что отвечает.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru