Мои рассуждения:
byte[] array = md5.digest(); // Массив из Байтов(8 битов)
далее:
int b = array[j] & 0xFF // например 10101010 & 11111111 = 10101010
Ни чего не миняется и это результат ззперемещается в облась памяти(2а или 4и байта)...
Ну и что?
Преобразование типов посмотрите. И о знаковом бите почитайте.
Примерчик:
public class A {
public static void main(String[] args) {
byte b = (byte) 128;
int i = b;
System.out.println(i);
System.out.println(Integer.toHexString(i));
}
}
Здравствуйте, fefelov, Вы писали: F>Преобразование типов посмотрите. И о знаковом бите почитайте.
F>Примерчик:
F>
public class A {
F> public static void main(String[] args) {
F> byte b = (byte) 128;
F> int i = b;
F> System.out.println(i);
F> System.out.println(Integer.toHexString(i));
F> }
F>}
Здравствуйте, chesnokov_a, Вы писали:
_>Здравствуйте, fefelov, Вы писали:
F>>Ну так это — ответ. Учите теорию. _>И Всетаки что происходит про побайтовом "И" с маской "FF"
Простите опечатался побитовом "И" конечно же
Здравствуйте, chesnokov_a, Вы писали:
_>И Всетаки что происходит про побайтовом "И" с маской "FF"
Приведенная выше тестовая программка выдавала:
ffffff80
Если к этому числу применить "& 0xff", то биты, которые получились в результате преобразования типов, будут "выкинуты":
0xffffff80 & 0xff = 0x80
что и требовалось получить.
Здравствуйте, fefelov, Вы писали: F>Если к этому числу применить "& 0xff", то биты, которые получились в результате преобразования типов, будут "выкинуты": F>0xffffff80 & 0xff = 0x80 F>что и требовалось получить.
То есть при выполнении:
int b = i & 0xFF;
Первым делом происходит преобразование i к типу integer,
где он и преобретает дополнительные 3и бита,
затем мы обнуляем эти 3и бита маской FF — через которую проходит только младший бит
и затем мы присваиваем получившееся значение b.
Я правельно понял?
Почему так "некорректно" происходит преобразование типа byte к integer?
Здравствуйте, chesnokov_a, Вы писали:
_>Почему так "некорректно" происходит преобразование типа byte к integer?
Почему же некорректно? Все происходит в соответствии с Java Language Specification.
Прочтите, наконец, ее или что-нибудь более популярное, например Эккеля или Вязовика.
Здравствуйте, chesnokov_a, Вы писали:
_>где он и преобретает дополнительные 3и бита, _>затем мы обнуляем эти 3и бита маской FF — через которую проходит только младший бит
Я вижу, вы биты с байтами путаете. Нехорошо это. Неправильно.
Первая книга у меня есть, правда не помню какое издание,
прочитал ее от корки до корки, и что то в памяти не отллжилось
ни чего касательно темы...может быть не придал значения...
Перечитаю.
Здравствуйте, chesnokov_a, Вы писали:
_>Первая книга у меня есть, правда не помню какое издание, _>прочитал ее от корки до корки, и что то в памяти не отллжилось _>ни чего касательно темы...может быть не придал значения... _>Перечитаю.
я нашел правда в java lang spec 3.0 chapter 5 — Conversions and Promotions. скачать можно всегда с Java Sun