private static string ConvertBinaryToText(ReadOnlyMemory <byte> data, BinaryInputEncoding encoding) { switch (encoding) { case BinaryInputEncoding.Hex: return(Hex.FromBytes(data)); case BinaryInputEncoding.Base64: return(Convert.ToBase64String(data.Span)); } return(Encoding.Default.GetString(data.Span)); }
private async Task OnUploadFile() { var data = await _uploadFileDialog.PromptToUploadFile(); if (!data.IsEmpty) { _data = data; _encoding = GuessAtBestEncoding(_data); _text = ConvertBinaryToText(_data, _encoding); _textParsingError = null; NotifyValueChanged(); } }
private void OnEncodingChanged(BinaryInputEncoding encoding) { _encoding = encoding; (_data, _textParsingError) = ConvertTextToBinary(_text, _encoding); NotifyValueChanged(); }
private static (ReadOnlyMemory <byte> data, string error) ConvertTextToBinary(string text, BinaryInputEncoding encoding) { if (string.IsNullOrEmpty(text)) { return(ReadOnlyMemory <byte> .Empty, null); } switch (encoding) { case BinaryInputEncoding.Base64: try { return(Convert.FromBase64String(text), null); } catch (FormatException ex) { return(ReadOnlyMemory <byte> .Empty, $"Unable to recognize content as Base 64: {ex.Message}"); } case BinaryInputEncoding.Hex: try { return(Hex.ToBytes(text), null); } catch (ArgumentException ex) { return(ReadOnlyMemory <byte> .Empty, $"Unable to recognize content as HEX: {ex.Message}"); } default: try { return(Encoding.Default.GetBytes(text), null); } catch (ArgumentException ex) { return(ReadOnlyMemory <byte> .Empty, $"Unable to recognize content as text: {ex.Message}"); } } }