Есть, конечно, много способов надежной упаковки произвольного байтового массива в символы Юникода, но ни один из них не очень эффективен. очень жаль , что ActiveDirectory решил бы использовать Unicode для данных, которые не являются текстовыми по своему характеру. Это похоже на использование строки для представления 32-разрядного целого числа или на использование Nutella для написания любовного письма.
Я бы порекомендовал «быть осторожным» и использовать кодировку на основе ASCII, например base64
. Я рекомендую это потому, что для этого уже есть встроенная реализация .NET:
var base64Encoded = Convert.ToBase64String(byteArray);
var original = Convert.FromBase64String(base64Encoded);
Теоретически вы можете придумать более эффективную кодировку, используя больше наборов символов Юникода. Однако для того, чтобы сделать это надежно , вам нужно немного узнать о Unicode.