Консультация № 67934
21.12.2006, 06:26
0.00 руб.
0 1 1
Здравствуйте уважаемые Эксперты!
Возможно не в этой рубрике, но можно и на java…
Вопрос: Есть массив байтов – принимаю из сокета, т.е. это кадр. В нем есть поле данных, из них могут быть как целочисленные, так и с плавающей запятой. Естественно встаёт вопрос – как можно из byte -> в float или int перевести. Сколько не бился на C# - не хочет делать ничего с массивом байт даже распечатать (ну кроме как в цикле каждый байт). Так ничего и не нашел.
Уверен проблема тривиальная, буду рад любой помощи, в том числе и ссылкам.

Приложение:
public int SendReceiveTest(Socket server) { byte[] bytes = new byte[256]; Byte[] bt; String s = ""; try { int size_send = server.Send(data, data.Length, SocketFlags.DontRoute); list_info.Items.Add(String.Format("оправлено на сервер {0} байт.", size_send)); Thread.Sleep(1000); int byteCount = server.Receive(bytes, server.Available,SocketFlags.None); if (byteCount > 0) { bt = new Byte[byteCount + 1]; list_info.Items.Add(String.Format("Принято: {0} байт", byteCount));//пришло 47 байт - из них 24 - типа float, как их получить? for (int i = 12; i < byteCount-1; i++) s +=bytes[i]; list_info.Items.Add(s); } } catch (SocketException e) { MessageBox.Show(String.Format("{0} Error code: {1}.", e.Message, e.ErrorCode), "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); list_info.Items.Add("Ошибка"); return (e.ErrorCode); } return 0; }

Обсуждение

Неизвестный
21.12.2006, 14:32
общий
это ответ
Здравствуйте, Виктор Пырлик!
используйте System.BitConverter

float f=System.BitConverter.ToSingle(bytes,12);
Форма ответа