Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.07.2016, 08:32   #11
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

Главное понимать, что данные в цифровой электронике хранятся и обрабатываются ТОЛЬКО В ДВОИЧНОМ ВИДЕ! А то, как ты их на экране видишь (и вводишь), зависит только от разработчиков софта, с помощью которого ты это делаешь.


З.Ы. Ну, и знак в знаковых типа находится в старшем бите. "+" = 0, "-" = 1.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 12.07.2016, 16:19   #12
BonBonita
 
Регистрация: 20.02.2015
Сообщений: 8
По умолчанию

Попробую теперь всё подытожить:

Информация в компьютере хранится в двоичном коде.
В моём случае это последовательность 10001001.

Когда я пыталась прочитать этот байт как char, компилятор понимал его как символ в кодировке ANSII(а может Unicode, ещё не разобралась). И после перевода его в 16-тиричное целое выдавал fffd.
Так нельзя было делать, т.к. первые восемь байт png-файла описаны как последовательность типа byte
Цитата:
typedef struct _PngSignature
{
BYTE Signature[8]; /* Идентификатор (всегда 89504E470D0A1A0Ah) */
} PNGSIGNATURE;

Поэтому надо читать файл при помощи незаслуженно проигнорированного мной (..р51х сорри...)
Цитата:
byte[] cont = Files.readAllBytes(Paths.get(aFileN ame));
но диапазон значений типа BYTE от -128...127, а у меня записан unsigned byte со значением 137, что больше, чем 127.
Учитывая , что 127++ = -128, логично, что я получала -119.

Чтоб выйти из этой ситуации надо перейти либо к типу integer, либо к неотрицательному byte.
А это можно получить либо так
Цитата:
cont[i] & 0xFF
либо так
Цитата:
Byte.toUnsignedInt(cont[i])
p.s. Ух, с первым символом вроде разобралась, осталось 3 999 999...
Всем СПАСИБО.

Последний раз редактировалось BonBonita; 12.07.2016 в 16:52.
BonBonita вне форума Ответить с цитированием
Старый 12.07.2016, 16:55   #13
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

Сакральный вопрос: а нахрена тебе всё это?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C++. Прочитать файл и вывести в другой файл каждую N-ую строку Straiker Помощь студентам 3 15.12.2009 05:49
Загрузить png файл MAcK Мультимедиа в Delphi 1 22.12.2008 22:23
Прочитать png формат в image Sin3v Общие вопросы Delphi 1 18.07.2008 11:45
как прочитать файл бодяга Общие вопросы Delphi 1 09.09.2007 20:37