Comment puis-je convertir sbyte[]
en chaîne de base64?Comment convertir une chaîne sbyte [] en base64?
Je ne peux pas convertir ce sbyte[]
en byte[]
, pour maintenir l'interopérabilité avec Java.
Comment puis-je convertir sbyte[]
en chaîne de base64?Comment convertir une chaîne sbyte [] en base64?
Je ne peux pas convertir ce sbyte[]
en byte[]
, pour maintenir l'interopérabilité avec Java.
Vous pouvez absolument convertir le sbyte[]
à un byte[]
- je peux garantir à peu près vous que le code Java vraiment être le traitement du tableau d'octets comme non signé. (Ou pour le dire autrement: base64 est seulement défini en termes d'octets non signés ...)
Il suffit de convertir byte[]
et appeler Convert.ToBase64String
. La conversion en byte[]
est en fait vraiment facile - même si C# lui-même ne prévoit pas une conversion entre les deux, le CLR est très heureux d'effectuer une conversion de référence, de sorte que vous avez juste besoin de tromper le compilateur C#:
sbyte[] x = { -1, 1 };
byte[] y = (byte[]) (object) x;
Console.WriteLine(Convert.ToBase64String(y));
Si vous voulez avoir un véritable byte[]
vous pouvez copier:
byte[] y = new byte[x.Length];
Buffer.BlockCopy(x, 0, y, 0, y.Length);
mais personnellement je bâton avec la première forme.
Rapide. Quelqu'un me jette un lien vers les faits de john skeet. Je rigole. Le respect. – TigOldBitties
Cela a un sens, comme le Convert.ToBase64String utilise des pointeurs pour obtenir la représentation binaire ... Et c'est un modèle ... –
@NoProblemBabe: Les pointeurs sont vraiment pas pertinents ici, pour être honnête ... –
class Program
{
static void Main()
{
sbyte[] signedByteArray = { -2, -1, 0, 1, 2 };
byte[] unsignedByteArray = (byte[])(Array)signedByteArray;
Console.WriteLine(Convert.ToBase64String(unsignedByteArray));
}
}
Désolé compagnon, en utilisant ce double casting assez souvent, je reçois une erreur sur un type de tableau de discordance. Spécialement en utilisant nhibernate. Mais merci –
J'ai vu qu'il existe une méthode convertall dans la classe Array, où vous pouvez, par lambda, lancer chaque élément –
Comment voulez-vous le convertir en base64? Traiter le sbyte comme s'il s'agissait d'un octet? –