Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Программирование / Programming (https://forum.zone-game.info/forumdisplay.php?f=98)
-   -   signed\unsigned byte (https://forum.zone-game.info/showthread.php?t=17771)

DoYrdenDzirt 21.01.2012 07:18

signed\unsigned byte
 
Столкнулся я с такой проблемой. Пишу клиент-серверное приложение. Клиент - на сишарпе, сервер - на джаве. Есть функция, меняющая значения байтов в массиве. На шарпе:

Код:

System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
            byte[] bytes = encoding.GetBytes("line");

            for (int i = 0; i < bytes.Length; i++)
            {
                bytes[i] += (byte) (234 / (2 + i));
                Console.WriteLine(bytes[i]);
            }
            return encoding.GetString(bytes);

После чего, из полученных байтов генерируется строка и отсылается серверу. Сервер же должен произвести обратную функцию и восстановить исходный текст.

Код:

                byte[] bytes = data.getBytes();
                for(int i = 0; i < bytes.length; i++)
                {
                        bytes[i] -= (234 / (2 + i));
                }
               
                return new String(bytes);

Но, видимо, из-за того, что на шарпе байты беззнаковые, а на джаве знаковые - строка дешифруется неверно.
Подскажите как здесь быть.

Aquanox 21.01.2012 09:41

Re: signed\unsigned byte
 
Код:

bytes[i] = (byte) (bytes[i] - (234 / (2 + i)) & 0xFF);

Azagthtot 21.01.2012 10:33

Re: signed\unsigned byte
 
Во-вторых. Если вы используете в C# string.toByte() то у вас количество байт будет зависить от культуры. В Java new String(byte [] ) так же зависит от использованной кодировки. Т.е. если у вас с C# однобайтовая культура, а в Java кодировка UTF8, то бардак-с получится

DoYrdenDzirt 22.01.2012 21:13

Re: signed\unsigned byte
 
Спасибо, ребят :)


Текущее время: 09:48. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot