signed\unsigned byte - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Сообщество Календарь
Вернуться   Форум администраторов игровых серверов > Полезное / Common > Программирование / Programming

Программирование / Programming
Ищете помощи в написании программы, есть сложность в выполнении задания (в институте и т.д.), пожалуйста, спросите у нас в данном форуме и мы обязательно вам поможем.

Ответ
Опции темы
Непрочитано 21.01.2012, 07:18   #1
Аватар для DoYrdenDzirt
Пользователь

Автор темы (Топик Стартер) 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);
Но, видимо, из-за того, что на шарпе байты беззнаковые, а на джаве знаковые - строка дешифруется неверно.
Подскажите как здесь быть.
DoYrdenDzirt вне форума Ответить с цитированием
Непрочитано 21.01.2012, 09:41   #2
Пользователь

По умолчанию Re: signed\unsigned byte

Код:
bytes[i] = (byte) (bytes[i] - (234 / (2 + i)) & 0xFF);
__________________
for(;Forum.getPostCount() < Integer.MAX_VALUE; Forum.writeNewPost()); | TERA Video | GamezTERA Emu
Aquanox вне форума Ответить с цитированием
Сказали спасибо:
Непрочитано 21.01.2012, 10:33   #3
Аватар для Azagthtot
Эксперт

По умолчанию Re: signed\unsigned byte

Во-вторых. Если вы используете в C# string.toByte() то у вас количество байт будет зависить от культуры. В Java new String(byte [] ) так же зависит от использованной кодировки. Т.е. если у вас с C# однобайтовая культура, а в Java кодировка UTF8, то бардак-с получится
Azagthtot вне форума Отправить сообщение для Azagthtot с помощью ICQ Отправить сообщение для Azagthtot с помощью Skype™ Ответить с цитированием
Сказали спасибо:
Непрочитано 22.01.2012, 21:13   #4
Аватар для DoYrdenDzirt
Пользователь

Автор темы (Топик Стартер) Re: signed\unsigned byte

Спасибо, ребят
DoYrdenDzirt вне форума Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


© 2007–2024 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 12:26. Часовой пояс GMT +3.

Вверх