c# .Problemy z konwersią string to int.

c# .Problemy z konwersią string to int.
DO
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 8 lat
  • Postów:4
0

Witam.
Mam za zadanie napisać program komunikujący się przez protokół Udp lub Tcp i przesyłający tablice int-ów.
Napisałem poniższy kod.

Klient - wysyła tablice .
W kliencie raczej nie widzę problemu działa poprawnie.

Kopiuj
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net.Sockets;

namespace UDPKlient
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private string dane1()
    {
            int[] tab = new int[11] {1,1,0,9,9,9,9,9,9,9,0};
            string text="";
            for(int i =0 ;i<11; i++)
            {
            text =text + System.Convert.ToString(tab[i])+" ";
            }
            return text;
    }
        
        private void button1_Click(object sender, EventArgs e)
        {
            string host = "192.168.1.2";
            int port = 4444;
            try
            {
                UdpClient klient = new UdpClient(host,port);
                Byte[] dane = Encoding.ASCII.GetBytes(dane1());
                klient.Send(dane, dane.Length);
                
                klient.Close();
            }
            catch (Exception ex)
            {
                
                MessageBox.Show(ex.ToString(),"Bład");
            }


        }
    }
}

Serwer - pobiera tablice.
i tu mam pewien problem , serwer odbiera tablice w postaci [Byte]
i zęby przepisać dane z powrotem do tablicy muszę przekontrastować te dane do int-a.
Do tego celu napisałem taki kod.

Kopiuj
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Sockets;
using System.Net;

namespace test
{
    class Program
    {
        static void Main(string[] args)
        {
            string temp="";
            int liczba;
            int port = 4444;
            IPEndPoint zdalnyIP = new IPEndPoint(IPAddress.Any,0);
            try
            {
                UdpClient serwer = new UdpClient(port);
                Byte[] odczyt = serwer.Receive(ref zdalnyIP);
                string dane = Encoding.ASCII.GetString(odczyt);
                System.Console.WriteLine(dane);
                serwer.Close();

                for (int i = 0; i < 22; i++)
                {
                    if(i%2==0)
                    {
                    temp = System.Convert.ToString(dane[i]);
                    liczba = System.Convert.ToInt16(temp);
                    System.Console.WriteLine(liczba);
                    }
                }
                
            }

            catch
            {
                System.Console.WriteLine("Bład");


            }
            System.Console.ReadKey();

        }
    }
}

I tu jest problem bo mój kod serwera jest na tyle prymitywny, że radzi sobie z tablicą w postaci { 1,2,3,5,3,4..,9}
ale wykłada się na tablicy mieszanej z większymi parametrami int np {1,32,43,55,..,944}

Może ktoś potrafi mi wskazać błąd i podpowiedzieć jak rozwiązać ten problem.
Wiem ze problem jest w konwersji pomiędzy typami ale nie potrafię znaleźć funkcji która potrafiła by przekonwertować bezpośrednio z [Byte] do int , a konwertowanie przez stringa chyba nie jest najlepszym pomysłem ?

edytowany 2x, ostatnio: Dormpl
dam1an
"przekontrastować" :DD
CS
Dam1an, to nie jeden smaczek, ten człowiek posługuje się "tablicom"
dam1an
Wiem, ale dziś widziałem już gdzieś użyte 'tom' zamiast 'tą', więc na to już tak nie zwróciłem uwagi.
CS
Ah no widzisz pan, czytałem uważnie wszystko poza kodem, turbo @spartanPAGE przyszedł z pomocą.
spartanPAGE
  • Rejestracja:około 12 lat
  • Ostatnio:7 dni
1

Całość to jakaś herezja, nie trzyma się kupy. NIE przesyłaj tego jako cały string.
Zapoznaj się z poniższymi pięknisiami

Kopiuj
System.IO.MemoryStream
System.IO.BinaryWriter

Ah, ostatnia uwaga - w pełni obiektowym języku nie wypada pisać liniowo

edytowany 5x, ostatnio: spartanPAGE
CS
Kubełek z KFC dla tego pana.
DO
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 8 lat
  • Postów:4
0

Dzięki za podpowiedź , ale na razie te dwie biblioteki nie wiele mi mówią , poczytam o nich , dało by się podrzucić jakiś przykładowy kod albo chociaż fragment jak dokonać takiej konwersji ?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.