Как программисты портировали Skype на Windows Phone если на C# нет сериализации как в Си и работа с бинарными данными?
В C# работа с бинарными данными очень сложная, вот пример где число переводится в байт на C#:
12345
//Конвертирует из числа в байт
private static String conv_int_to_chr(int num)
{
return ((char)num).ToString();
}
Только авторизированные пользователи могут оставлять свои ответы
Дата
Популярность
пример где число переводится в байт на C#:
Ты ошибаешься. Твой код преобразует число не в байт и не в символ, а в строку, состоящую из одного символа. Именно потому так длинно.
Но для перевода числа в символ достаточно: (char)num - точно так же, как в C/C++.
В C# нет никаких проблем с сериализацией и бинарными данными. В C# с бинарями работать даже удобнее, чем в C++, есть всякие Span, ref struct и классы BinaryReader/Writer.
В вашем коде число в байт не преобразуется.
byte a = unchecked((byte)num); // вот число в байт. Но зачем?
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
using System;
using System.IO;
class Program
{
static void Main()
{
// Пример сериализации
SerializeData("data.dat");
// Пример десериализации
DeserializeData("data.dat");
}
static void SerializeData(string filePath)
{
using (BinaryWriter writer = new BinaryWriter(File.Open(filePath, FileMode.Create)))
{
int intValue = 42;
double doubleValue = 3.14;
string stringValue = "Hello, Binary World!";
// Записываем данные в бинарный файл
writer.Write(intValue);
writer.Write(doubleValue);
writer.Write(stringValue);
}
Console.WriteLine("Serialization complete.");
}
static void DeserializeData(string filePath)
{
using (BinaryReader reader = new BinaryReader(File.Open(filePath, FileMode.Open)))
{
// Читаем данные из бинарного файла
int intValue = reader.ReadInt32();
double doubleValue = reader.ReadDouble();
string stringValue = reader.ReadString();
// Выводим прочитанные данные
Console.WriteLine($"Int Value: {intValue}");
Console.WriteLine($"Double Value: {doubleValue}");
Console.WriteLine($"String Value: {stringValue}");
}
Console.WriteLine("Deserialization complete.");
}
}