How to convert string to base64 byte array, would this be valid?

后端 未结 5 2031
温柔的废话
温柔的废话 2021-02-03 20:20

I\'m trying to write a function that converts a string to a base64 byte array. I\'ve tried with this approach:

public byte[] stringToBase64ByteArray(String input         


        
相关标签:
5条回答
  • 2021-02-03 21:00

    Looks okay, although the approach is strange. But use Encoding.ASCII.GetBytes() to convert the base64 string to byte[]. Base64 encoding only contains ASCII characters. Using Unicode gets you an extra 0 byte for each character.

    0 讨论(0)
  • 2021-02-03 21:00

    You can use:

    From byte[] to string:

    byte[] array = somebytearray;

    string result = Convert.ToBase64String(array);

    From string to byte[]:

    array = Convert.FromBase64String(result);

    0 讨论(0)
  • 2021-02-03 21:06

    Representing a string as a blob represented as a string is odd... any reason you can't just use the string directly?

    The string is always unicode; it is the encoded bytes that change. Since base-64 is always <128, using unicode in the last part seems overkill (unless that is what the wire-format demands). Personally, I'd use UTF8 or ASCII for the last GetBytes so that each base-64 character only takes one byte.

    0 讨论(0)
  • 2021-02-03 21:19

    All strings in .NET are unicode. This code will produce valid result but the consumer of the BASE64 string should also be unicode enabled.

    0 讨论(0)
  • 2021-02-03 21:19

    Yes, it would output a base64-encoded string of the UTF-16 little-endian representation of your source string. Keep in mind that, AFAIK, it's not really common to use UTF-16 in base64, ASCII or UTF-8 is normally used. However, the important thing here is that the sender and the receiver agree on which encoding must be used.

    I don't understand why you reconvert the base64 string in array of bytes: base64 is used to avoid encoding incompatibilities when transmitting, so you should keep is as a string and output it in the format required by the protocol you use to transmit the data. And, as Marc said, it's definitely overkill to use UTF-16 for that purpose, since base64 includes only 64 characters, all under 128.

    0 讨论(0)
提交回复
热议问题