powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Беззнаковые числа (а всё таки почему их нет в Яве)?
10 сообщений из 35, страница 2 из 2
Беззнаковые числа (а всё таки почему их нет в Яве)?
    #33715313
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 автор

Что то вроде этого?

C++/C#
Код: plaintext
1.
for(int i= 0 ;i<size;i++) sum+=a[i];


Java
Код: plaintext
1.
for(int i= 0 ;i<size;i++) sum+=( a[i]< 0  )?(int)a[i]+ 256 :(int)a[i];
...
Рейтинг: 0 / 0
Беззнаковые числа (а всё таки почему их нет в Яве)?
    #33715576
unicornmirage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну вроде того
...
Рейтинг: 0 / 0
Беззнаковые числа (а всё таки почему их нет в Яве)?
    #33717597
Миша Оно
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton2 автор

Что то вроде этого?

Java
Код: plaintext
1.
for(int i= 0 ;i<size;i++) sum+=( a[i]< 0  )?(int)a[i]+ 256 :(int)a[i];


Вроде этого

Код: plaintext
1.
 for ( int  i= 0 ;i<size;i++) sum+= a[i] & 0xFF;

2unicornmirage:

Вообще-то в цитировании речь шла об int и byte, а не byte и int.
...
Рейтинг: 0 / 0
Беззнаковые числа (а всё таки почему их нет в Яве)?
    #33734132
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NotGonnaGetUs
Я один такой тупой идиот, что не может придумать зачем нужны такие типы данных?


Я сейчас пишу генератор AFP-документов, там все данные в потоке документа - беззнаковые. Например, надо записать управляющий код
0xf7 , пишешь

writeByte( 0xf7 );
...
void writeByte( byte val );

и обламываешься.

0xf7 - во-первых, int, а во вторых, в byte не влазит.

Писать -0x77 не хочется, потому что это - код, он должен быть таким, какой он есть. Чтобы сразу узнавался.

Вот и приходится писать
void writeByte( short val ); // когда думаешь byte
void writeShort( int val ); // когда думаешь short

и так далее.

Может быть это моя С-шная зашоренность, и можно как-то еще это проще сделать, но я что-то не нашел другого способа.
...
Рейтинг: 0 / 0
Беззнаковые числа (а всё таки почему их нет в Яве)?
    #33734297
romvs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А вот так работают настоящие стахановцы - http://www.darksleep.com/player/JavaAndUnsignedTypes.html
...
Рейтинг: 0 / 0
Беззнаковые числа (а всё таки почему их нет в Яве)?
    #33734305
Фотография Кувалдин Роман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv NotGonnaGetUs
Я один такой тупой идиот, что не может придумать зачем нужны такие типы данных?


Я сейчас пишу генератор AFP-документов, там все данные в потоке документа - беззнаковые. Например, надо записать управляющий код
0xf7 , пишешь

writeByte( 0xf7 );
...
void writeByte( byte val );

и обламываешься.

0xf7 - во-первых, int, а во вторых, в byte не влазит.

Писать -0x77 не хочется, потому что это - код, он должен быть таким, какой он есть. Чтобы сразу узнавался.

Вот и приходится писать
void writeByte( short val ); // когда думаешь byte
void writeShort( int val ); // когда думаешь short

и так далее.

Может быть это моя С-шная зашоренность, и можно как-то еще это проще сделать, но я что-то не нашел другого способа.

0xF7 прекрасно влазит в байт. Получается -9 или если в двоичном виде - то 11110111.

Подумай вот над этим:

Код: 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.
 public   class  Main
{
     public  Main()
    {
         byte  val1 = ( byte )0xFE;
         byte  val2 = ( byte )0xBA;

         byte  result = writeByte(val1, val2);

        System.out.println("RESULT: "+result);
        
    }

     public   static   void  main(String[] args)
    {
         new  Main();
    }
    
     public   byte  writeByte( byte  value1,  byte  value2)
    {
        // не понимаю, почему операция между двумя байтовыми значениями 
        // преобразуется к int
         byte  result = ( byte )(value1 - value2);
         return  result;
    }
}
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Беззнаковые числа (а всё таки почему их нет в Яве)?
    #38206188
Tamachi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Задача:
На вход поступает массив byte[] = { 0xd9, 0x9f, 0x24 }

Надо преобразовать его в целое число, считая, что
byte[0] -- это младший байт,
byte[1] -- это средний байт,
byte[2] -- это старший байт

Если тупо посчитать по формуле

byte[0] + byte[1]*256 + byte[2]*256*256,

то ответ будет неверным из-за того, что Java криво работает с беззнаковыми числами.


пробовал делать так:

(int)(byte[0]) + ((int)(byte[1])*256) + (((int)byte[2])*256*256)

-- ответ тоже не соответствует правильному


попробовал так:
(long)(byte[0]) + ((long)(byte[1])*256) + (((long)byte[2])*256*256)

Тоже не работает!


Потом ещё много чего пробовал... Сдвиги, например...

Блин!
Как же посчитать формулу y=a+b*256+c*256*256 на Java?
...
Рейтинг: 0 / 0
Беззнаковые числа (а всё таки почему их нет в Яве)?
    #38206197
maxkar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tamachi,

(byte[0] &0xFF) + (byte[1] & 0xFF) * 256 + (byte[2] &0xFF) *256*256
Или даже
(byte[0] &0xFF) + ((byte[1] & 0xFF) << 8) + ((byte[2] &0xFF) << 16)
...
Рейтинг: 0 / 0
Беззнаковые числа (а всё таки почему их нет в Яве)?
    #38206199
avp.mk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Tamachi,
Может не надо ничего счетать, а просто прочитать long?

http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=947160&msg=12688953
(тут double)
...
Рейтинг: 0 / 0
Беззнаковые числа (а всё таки почему их нет в Яве)?
    #38206265
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tamachi,

Код: java
1.
2.
int rgb = new java.awt.Color(0xD9, 0x9F, 0x24, 0).getRGB();
System.out.format("%X\n", rgb);
...
Рейтинг: 0 / 0
10 сообщений из 35, страница 2 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Беззнаковые числа (а всё таки почему их нет в Яве)?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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