Hvordan får jeg en konsistent byte-repræsentation af strenge i C# uden manuelt at angive en kodning?
Hvordan konverterer jeg en string
til en byte[]
i .NET (C#) uden manuelt at angive en bestemt kodning?
Jeg har tænkt mig at kryptere strengen. Jeg kan kryptere den uden at konvertere, men jeg vil stadig gerne vide, hvorfor kodning kommer i spil her.
Desuden, hvorfor skal kodning tages i betragtning? Kan jeg ikke bare få fat i hvilke bytes strengen er blevet gemt i? Hvorfor er der en afhængighed af tegnkodninger?
2111
3
Det afhænger af kodningen af din streng (ASCII, UTF-8, ...).
For eksempel:
Et lille eksempel på, hvorfor kodning har betydning:
ASCII er simpelthen ikke udstyret til at håndtere specialtegn.
Internt bruger .NET-rammen UTF-16 til at repræsentere strenge, så hvis du blot ønsker at få de nøjagtige bytes, som .NET bruger, skal du bruge
System.Text.Encoding.Unicode.GetBytes (...)
.Se Character Encoding in the .NET Framework (MSDN) for at få flere oplysninger.