Программа на C #: преобразование шестнадцатеричных данных в обычный текст: ошибка импорта библиотеки - PullRequest
0 голосов
/ 02 января 2012

Это моя программа на C #: мне нужно декодировать шестнадцатеричные данные в обычный текст в удобочитаемом формате.Я предпочитаю использовать класс Hex из библиотеки apache, который я скачал с http://commons.apache.org/codec/download_codec.cgi, который является файлом jar.

Jar-файлы не принимаются компиляторами C #.Итак, после небольшого поиска, я узнал, что мне нужно сначала преобразовать файл jar commons-codec в MSIL, используя jbimp.exe из Visual Studio, а затем импортировать его.Я использую Visual Studio 2010. Но я не смог найти утилиту jbimp.exe, чтобы конвертировать этот jar в MSIL.Я не могу найти утилиту JBimp в моей системе.

Пожалуйста, помогите мне, как и где я могу получить утилиту jbimp?а также как мне указать код MSIL в качестве пакета / пространства имен для файла C #?

Мой код C #:

using org.apache.commons.codec.binary.Hex;

class mainw
{
    private static byte[] secret = new byte[] 
        {0x33, 0x34, 0x36, 0x32, 0x33, 0x36, 0x36, 0x36, 0x33, 0x36, 
         0x36, 0x32, 0x33, 0x36, 0x36, 0x36, 0x33, 0x37, 0x33, 0x33, 
         0x33, 0x36, 0x33, 0x32, 0x33, 0x37, 0x33, 0x35, 0x33, 0x36, 
         0x36, 0x33, 0x33, 0x36, 0x36, 0x33, 0x33, 0x36, 0x33, 0x35};

    public static void main(string[] args) 
    {
        Hex hex = new Hex();
        byte[] secretDecoded1 = hex.decode(secret);
        byte[] secretDecoded2 = hex.decode(secretDecoded1);
        System.out.println("The secret is: "+new String(secretDecoded2));
    }

}

Ответы [ 2 ]

3 голосов
/ 02 января 2012

Конвертировать библиотеку Java в IL просто для шестнадцатеричных манипуляций. Честно говоря, очень редко было бы хорошей идеей вообще преобразовать библиотеку Java в IL - почти всегда есть «родная» эквивалентная библиотека .NET, соответствующая .NET идиомам и т. Д.

Не совсем понятно, с чего вы начали, если честно - если вы начинаете с байтового массива и хотите преобразовать его в текст, вы обычно используете что-то вроде

String text = Encoding.UTF8.GetString(bytes);

... используя подходящую кодировку.

Чтобы проанализировать шестнадцатеричные данные (которые, естественно, текст , а не байты) в их двоичный эквивалент (который является байтовым массивом), вы можете использовать что-то вроде кода, который я разместил в этот ответ переполнения стека .

0 голосов
/ 02 января 2012

Я не уверен на 100%, что правильно понимаю вопрос, но вот код, который я использую для преобразования шестнадцатеричных данных в читаемый текст на C # для вложений Microsoft CRM:

using (FileStream fileStream = new FileStream("c:\path\to\file\filename.ext", 
FileMode.OpenOrCreate))
{
    byte[] fileContent = Convert.FromBase64String("Your HEX String HERE");
    fileStream.Write(fileContent, 0, fileContent.Length);
}

Поскольку это стандартный C #код, который вы могли бы использовать для записи в строковую переменную вместо файла, если это то, что вы пытаетесь сделать.

Пит

...