Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Zigoga
3 / 3 / 0
Регистрация: 18.01.2016
Сообщений: 184
1

Кодировка данных и запись их в память

12.07.2017, 20:29. Просмотров 442. Ответов 9
Метки нет (Все метки)

в общем есть несколько классов, интерфейс (грубо говоря)
мне нужно записать данные в массив байтов потом его закодировать и закинуть в память
реализации все есть!!!
но в мейне что то идет не так, прошу помощи что бы разобраться в ошибке (сама ошибка Stackowerflow)

C#
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
public interface ICommand
    {
        byte[] ToByteArray();
    }
 
 
 
[Serializable]
    public class BaseCommand : ICommand
    {
 
        public byte[] ToByteArray()
        {          
            using (MemoryStream str = new MemoryStream())
            {
                BinaryFormatter formater = new BinaryFormatter();
 
                formater.Serialize(str, ToByteArray());
                return str.ToArray();
            }
        }
 
    }
 
[Serializable]
    public class MassegCommand : BaseCommand
    {
        public string Name { get; set; }
        public string Messeg { get; set; }
 
    }
 
static void Main(string[] args)
        {
 
 
 
            //------------------------------
            BaseCommand serial = new BaseCommand();
 
            MassegCommand command = new MassegCommand();
            command.Name = "Ben";command.Messeg = "By-By-By";
 
            byte[] mas = new byte[1024];
            mas = Encoding.UTF8.GetBytes(command.Name + " " + command.Messeg);
                     
            using (MemoryStream str = new MemoryStream())
            {
                str.Write(mas, 0, mas.Length);
                //Console.WriteLine(str.Length.ToString());
                //serial.ToByteArray();// тут ошибка!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
            }
   
        }
 
 
    }
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.07.2017, 20:29
Ответы с готовыми решениями:

Запись данных в память программ PIC18LF46J50
Доброго времени суток! Такая проблема. Необходимо сохранять данные в энергонезависимую память...

Кодировка программы и кодировка базы данных
В общем в архиве стандартный пример и одна из программ по редактированию sqlite. Проблема...

Внешняя память PIC: как нарастить внутреннюю память данных?
Я только начал разбираться с ПИКами и пока не все понимаю. Мне нужно организовать систему сбора и...

Запись в файл и кодировка
Здравствуйте!!! Уважаемые гуру-программисты посоветуйте новичку как лучше реализовать следующую...

Кодировка. Запись из Stringgrid в Excel
Привет! Как записать в excel русскими буквами? procedure TForm1.Button2Click(Sender: TObject); ...

9
StudAssistant
Эксперт
9811 / 7003 / 2319
Регистрация: 17.04.2006
Сообщений: 9,622
12.07.2017, 20:29
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.
9
IamRain
1543 / 1294 / 407
Регистрация: 02.08.2011
Сообщений: 3,822
12.07.2017, 20:53 2
Цитата Сообщение от Zigoga Посмотреть сообщение
сама ошибка Stackowerflow
Посмотрите внимательно на 12 и 18 строки в вашем исходнике.
0
Zigoga
3 / 3 / 0
Регистрация: 18.01.2016
Сообщений: 184
12.07.2017, 21:05  [ТС] 3
IamRain, если не ошибаюсь в 18 строке "ToByteArray()" - это
я указываю путь от куда будут браться данные
0
IamRain
1543 / 1294 / 407
Регистрация: 02.08.2011
Сообщений: 3,822
12.07.2017, 21:08 4
У вас рекурсия, которая нигде не сходится/не заканчивается. Каждый вызов метода ToByteArray будет снова вызывать метод ToByteArray, и так далее до бесконечности.
Отсюда и Stackoverflow.
0
12.07.2017, 21:08
Zigoga
3 / 3 / 0
Регистрация: 18.01.2016
Сообщений: 184
12.07.2017, 21:19  [ТС] 5
IamRain, как мне правильно указать тогда путь не совсем понимаю
0
IamRain
1543 / 1294 / 407
Регистрация: 02.08.2011
Сообщений: 3,822
12.07.2017, 21:22 6
Я не знаю, что вы тут пишите, но обычно путь задается строкой.
0
Zigoga
3 / 3 / 0
Регистрация: 18.01.2016
Сообщений: 184
12.07.2017, 21:31  [ТС] 7
IamRain, как видите в мейне я создаю масив байтов вот его мне туда и нужно закинуть но как проинициализировать его правильно чет я запутался уже)
0
SeIZVeIZ
814 / 723 / 304
Регистрация: 08.02.2014
Сообщений: 2,191
Завершенные тесты: 3
12.07.2017, 22:31 8
Ну, например, передать в метод свой массив с байтами, или чего вы там хотите
C#
1
2
3
4
5
6
7
8
9
10
public byte[] ToByteArray(byte[] mas)
        {          
            using (MemoryStream str = new MemoryStream())
            {
                BinaryFormatter formater = new BinaryFormatter();
 
                formater.Serialize(str, mas);
                return str.ToArray();
            }
        }
C#
1
serial.ToByteArray(mas);
0
Zigoga
3 / 3 / 0
Регистрация: 18.01.2016
Сообщений: 184
12.07.2017, 22:42  [ТС] 9
SeIZVeIZ, будет ошибка )) мы наследуем интерфейс, а там этот метод без параметров
ну все равно спасибо я уже исправил кое что и норм
но возникла другая проблема как этот массив извлечь из памяти по статическом методу вот код
я явно что то упускаю
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public static class Ecstantion 
    {
        public static ICommand ParseCommand(this byte[] bytes)
        {
            using (MemoryStream str = new MemoryStream(bytes))
            {
                BinaryFormatter formater = new BinaryFormatter();
 
 
                object result = formater.Deserialize(str);
                return (ICommand)result;
            }
        }
       
    }
Добавлено через 58 секунд
вот моя реализация
C#
1
2
3
4
5
6
7
8
9
byte[] mas = new byte[1024];
byte[] mas2 = new byte[1024];
            using (MemoryStream str = new MemoryStream())
            {
                str.Write(mas, 0, mas.Length);
                mas2 = mas;
                mas2 = mas.ParseCommand(mas);
            }
Console.WriteLine(Encoding.UTF8.GetString(mas2));
0
SeIZVeIZ
814 / 723 / 304
Регистрация: 08.02.2014
Сообщений: 2,191
Завершенные тесты: 3
13.07.2017, 09:23 10
Цитата Сообщение от Zigoga Посмотреть сообщение
будет ошибка )) мы наследуем интерфейс, а там этот метод без параметров
а в чём проблема там прописать параметры для метода?
0
13.07.2017, 09:23
StackOverflow
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.07.2017, 09:23

Запись в память
Микроконтроллер PIC12F675, среда MPLAB. Нужно записать в EEPROM данные, чтобы впоследствии их...

Запись в память
Записываю значение в память вот так: procedure TForm1.Button1Click(Sender: TObject); var...

Запись в память
Как лучше всего записать значение аккумулятора в память?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru