Implement binary data escaping

This commit is contained in:
merry 2022-02-19 15:16:39 +00:00 committed by svc64
parent 09a63ba2b5
commit 3bdf9d9805

View file

@ -283,12 +283,12 @@ namespace Ryujinx.HLE.Debugger
if (len >= (ulong)data.Length - addr)
{
Reply("l" + data.Substring((int)addr));
Reply("l" + ToBinaryFormat(data.Substring((int)addr)));
break;
}
else
{
Reply("m" + data.Substring((int)addr, (int)len));
Reply("m" + ToBinaryFormat(data.Substring((int)addr, (int)len)));
break;
}
}
@ -624,6 +624,25 @@ namespace Ryujinx.HLE.Debugger
return ToHex(Encoding.ASCII.GetBytes(str));
}
private string ToBinaryFormat(byte[] bytes)
{
return string.Join("", bytes.Select(x =>
x switch
{
(byte)'#' => "}\x03",
(byte)'$' => "}\x04",
(byte)'*' => "}\x0a",
(byte)'}' => "}\x5d",
_ => Convert.ToChar(x).ToString(),
}
));
}
private string ToBinaryFormat(string str)
{
return ToBinaryFormat(Encoding.ASCII.GetBytes(str));
}
public void Dispose()
{
Dispose(true);