Come posso ottenere una rappresentazione coerente in byte delle stringhe in C# senza specificare manualmente una codifica?
Come posso convertire una stringa
in un byte[]
in .NET (C#) senza specificare manualmente una codifica specifica?
Ho intenzione di criptare la stringa. Posso crittografarla senza convertirla, ma vorrei comunque sapere perché la codifica entra in gioco qui.
Inoltre, perché la codifica dovrebbe essere presa in considerazione? Non posso semplicemente ottenere in quali byte è stata memorizzata la stringa? Perché c'è una dipendenza dalle codifiche dei caratteri?
2111
3
Dipende dalla codifica della vostra stringa (ASCII, UTF-8, ...).
Per esempio:
Un piccolo esempio del perché la codifica è importante:
ASCII semplicemente non è attrezzato per trattare i caratteri speciali.
Internamente, il framework .NET usa UTF-16 per rappresentare le stringhe, quindi se volete semplicemente ottenere i byte esatti che .NET usa, usate
System.Text.Encoding.Unicode.GetBytes (...)
.Vedi Character Encoding in the .NET Framework (MSDN) per maggiori informazioni.