Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        private async Task OnUploadFile()
        {
            var data = await _uploadFileDialog.PromptToUploadFile();

            if (!data.IsEmpty)
            {
                _data             = data;
                _encoding         = GuessAtBestEncoding(_data);
                _text             = ConvertBinaryToText(_data, _encoding);
                _textParsingError = null;
                NotifyValueChanged();
            }
        }
Exemplo n.º 3
0
 private void OnEncodingChanged(BinaryInputEncoding encoding)
 {
     _encoding = encoding;
     (_data, _textParsingError) = ConvertTextToBinary(_text, _encoding);
     NotifyValueChanged();
 }
Exemplo n.º 4
0
        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}");
                }
            }
        }