У меня есть два файла LDIF, из которых я читаю значения и использую их для сравнения, используя c# Один из attribute: value
в LDIF - это значение base64, необходимо преобразовать его в формат UTF-8
displayName:: Rmlyc3ROYW1lTGFzdE5hbWU=
Поэтому я подумал об использовании строки -> byte [], но я не могу использовать указанное выше значение displayName в качестве строки
byte[] newbytes = Convert.FromBase64String(displayname);
string displaynamereadable = Encoding.UTF8.GetString(newbytes);
В моем коде C# я делаю это для получить значения из файла ldif
for(Entry entry ldif.ReadEntry() ) //reads value from ldif for particular user's
{
foreach(Attr attr in entry) //here attr gives attributes of a particular user
{
if(attr.Name.Equals("displayName"))
{
string attVal = attr.Value[0].ToString(); //here the value of String attVal is system.Byte[], so not able to use it in the next line
byte[] newbytes = Convert.FromBase64String(attVal); //here it throws an error mentioned below
string displaynamereadable = Encoding.UTF8.GetString(attVal);
}
}
}
Ошибка:
The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or an illegal character among the padding characters.
Я пытаюсь использовать attVal как String, чтобы я мог получить закодированное значение UTf-8, но его выбрасывание ошибка. Я также пытался использовать BinaryFormatter и MemoryStream, он работал, но он вставил так много новых символов с исходным значением.
Снимок BinaryFormatter:
object obj = attr.Value[0];
byte[] bytes = null;
BinaryFormatter bf = new BinaryFormatter();
using (MemoryStream ms = new MemoryStream())
{
bf.Serialize(ms, obj);
bytes = (ms.ToArray());
}
string d = Encoding.UTF8.GetString(bytes);
Таким образом, результат после кодирования должен быть : "FirstNameLastName"
Но это дает "\u0002 \u004 \u004 ...................FirstNameLastName\v"
Спасибо,