BytesToString()

This commit is contained in:
Timerix22 2021-10-26 18:43:58 +03:00
parent e2d0fb8a03
commit dcc1ad3e17
4 changed files with 25 additions and 6 deletions

View File

@ -42,7 +42,7 @@ namespace DTLib.Filesystem
return output; return output;
} }
public static string ReadAllText(string file) => FrameworkFix.ToString(ReadAllBytes(file)); public static string ReadAllText(string file) => ReadAllBytes(file).BytesToString();
public static void WriteAllBytes(string file, byte[] content) public static void WriteAllBytes(string file, byte[] content)
{ {

View File

@ -105,7 +105,7 @@ namespace DTLib
public static Encoding UTF8 = new UTF8Encoding(false); public static Encoding UTF8 = new UTF8Encoding(false);
// байты в кодировке UTF8 в строку // байты в кодировке UTF8 в строку
public static string ToString(this byte[] bytes) => UTF8.GetString(bytes); public static string BytesToString(this byte[] bytes) => UTF8.GetString(bytes);
// хеш в виде массива байт в строку (хеш изначально не в кодировке UTF8, так что метод выше не работает с ним) // хеш в виде массива байт в строку (хеш изначально не в кодировке UTF8, так что метод выше не работает с ним)
public static string HashToString(this byte[] hash) public static string HashToString(this byte[] hash)
@ -183,5 +183,24 @@ namespace DTLib
o.Add(b.ToString()); o.Add(b.ToString());
return o; return o;
} }
// разбивает на части указанной длины
public static List<string> Split(this string s, int length)
{
List<string> parts = new();
int max = (s.Length/length).Truncate();
for(int i = 0; i<max; i++)
parts.Add(s.Substring(i*length, length));
if(max*length!=s.Length) parts.Add(s.Substring(max*length, s.Length-max*length));
return parts;
}
public static T If<T>(this T input, bool condition, Func<T,T> if_true, Func<T,T> if_false)
{
if(condition)
return if_true(input);
else
return if_false(input);
}
} }
} }

View File

@ -67,7 +67,7 @@ namespace DTLib.Network
Mutex.Execute(() => Mutex.Execute(() =>
{ {
BytesDownloaded=0; BytesDownloaded=0;
Filesize=FrameworkFix.ToString(MainSocket.GetPackage()).ToUInt(); Filesize=MainSocket.GetPackage().BytesToString().ToUInt();
MainSocket.SendPackage("ready".ToBytes()); MainSocket.SendPackage("ready".ToBytes());
int packagesCount = 0; int packagesCount = 0;
byte[] buffer = new byte[5120]; byte[] buffer = new byte[5120];
@ -144,7 +144,7 @@ namespace DTLib.Network
if(!dirOnServer.EndsWith("\\")) if(!dirOnServer.EndsWith("\\"))
dirOnServer+="\\"; dirOnServer+="\\";
Debug("b", "downloading manifest <", "c", dirOnServer+"manifest.dtsod", "b", ">\n"); Debug("b", "downloading manifest <", "c", dirOnServer+"manifest.dtsod", "b", ">\n");
var manifest = new Dtsod.DtsodV22(FrameworkFix.ToString(DownloadFileToMemory(dirOnServer+"manifest.dtsod"))); var manifest = new Dtsod.DtsodV22(DownloadFileToMemory(dirOnServer+"manifest.dtsod").BytesToString());
Debug("g", $"found {manifest.Values.Count} files in manifest\n"); Debug("g", $"found {manifest.Values.Count} files in manifest\n");
var hasher = new Hasher(); var hasher = new Hasher();
foreach(string fileOnServer in manifest.Keys) foreach(string fileOnServer in manifest.Keys)

View File

@ -55,7 +55,7 @@ namespace DTLib.Network
// получает пакет и выбрасывает исключение, если пакет не соответствует образцу // получает пакет и выбрасывает исключение, если пакет не соответствует образцу
public static void GetAnswer(this Socket socket, string answer) public static void GetAnswer(this Socket socket, string answer)
{ {
string rec = FrameworkFix.ToString(socket.GetPackage()); string rec = socket.GetPackage().BytesToString();
if(rec!=answer) if(rec!=answer)
throw new Exception($"GetAnswer() error: invalid answer: <{rec}>"); throw new Exception($"GetAnswer() error: invalid answer: <{rec}>");
} }