c#程序:将十六进制数据转换为普通文本:导入库错误

本文关键字:文本 导入 错误 转换 程序 十六进制 数据 | 更新日期: 2023-09-27 18:19:19

这是我的c#程序:我必须将十六进制数据解码为可读格式的正常文本。我更喜欢使用Hex类从apache库,我从http://commons.apache.org/codec/download_codec.cgi下载,这是一个jar文件。

Jar文件不被c#编译器接受。因此,经过一点谷歌搜索,我知道我必须首先使用Visual Studio中的jbimp.exe将common -codec jar文件转换为MSIL,然后导入它。我使用Visual Studio 2010。但是我找不到jbimp.exe实用程序将这个jar转换为MSIL。我无法在我的系统中找到JBimp实用程序。

请帮助我如何以及在哪里可以得到jbimp实用程序?以及我如何必须指定MSIL代码作为包/命名空间到c#文件?

My c# code:

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));
    }
}

c#程序:将十六进制数据转换为普通文本:导入库错误

仅仅为了十六进制操作而将Java库转换为IL完全是多余的。说实话,将Java库转换为IL几乎不是个好主意——几乎总是有一个"本地"的。net等效库可用,遵循。net习惯用法等。

这不是很清楚你的意思开始,说实话-如果你从一个字节数组开始,想把它转换成文本,你通常会使用像

这样的东西
String text = Encoding.UTF8.GetString(bytes);

…使用适当的编码。

要将十六进制数据(自然是文本,而不是字节)解析为其二进制等效(这是一个字节数组),您可以使用类似于我在这个堆栈溢出回答中发布的代码。

我不能100%肯定我正确理解了这个问题,但这里是我用来将十六进制数据转换为可读文本的代码,用于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#代码,你可以利用它来写一个字符串变量,而不是一个文件,如果这是你想做的。

皮特