当前位置:编程学习 > C#/ASP.NET >>

关于stringbuilder的数据进行其他数据类型转换的问题

我用stringbuilder类型的参数进行取值,得到的是类似乱码的东西(〰〰〰〰〰〰〰〰〰〰〰〰〰〰〰〰㜀 ),应该怎么处理呢?小弟是菜鸟,做了很多工作都没搞定 --------------------编程问答-------------------- 你的stringbuilder是那来的。可能是编码方式不对。 --------------------编程问答-------------------- 是C++程序的一个接口,stringbuilder是一个返回值 --------------------编程问答--------------------  [DllImport("F:\\BookManager\\CardSys\\dll\\dcrf32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
    public static extern short dc_beep(int icdev, int _Msec);
    [DllImport("F:\\BookManager\\CardSys\\dll\\dcrf32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
    public static extern int dc_init(int port, long baud);
    [DllImport("F:\\BookManager\\CardSys\\dll\\dcrf32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
    public static extern short dc_card(int icdev, short _Mode, out byte _Snr);
    [DllImport("F:\\BookManager\\CardSys\\dll\\dcrf32.dll", SetLastError = true, CharSet = CharSet.Auto)]
    public static extern int dc_exit(int icdev);
    [DllImport("F:\\BookManager\\CardSys\\dll\\dcrf32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
    public static extern short dc_write(int icdev, short _Adr, StringBuilder _Data);
    [DllImport("F:\\BookManager\\CardSys\\dll\\dcrf32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
    public static extern short dc_authentication(int icdev, short _Mode, short _SecNr);
    [DllImport("F:\\BookManager\\CardSys\\dll\\dcrf32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
    public static extern short dc_load_key_hex(int icdev, short _Mode, short _SecNr, byte[] _NKey);

    [DllImport("F:\\BookManager\\CardSys\\dll\\dcrf32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
    public static extern int dc_authentication_pass(int icdev, short _Mode, short Addr, byte[] passbuff);


    
    [DllImport("F:\\BookManager\\CardSys\\dll\\dcrf32.dll", SetLastError = true, CharSet = CharSet.Auto)]
    public static extern short dc_read_hex(int icdev, short _Adr,StringBuilder _Data); 
 protected void Button4_Click(object sender, EventArgs e)
    {

        int icdev1 = 0;
        short iRes1, iRes2, iRes3, iRes4, iRes5, iRes6;
        StringBuilder hexkey = new StringBuilder();
        byte snr1;

        //==初始化
        icdev1 = dc_init(100, 115200);
        //振铃
        iRes1 = dc_beep(icdev1, 20);
        //加载密码
        byte[] keydata = ASCIIEncoding.Default.GetBytes("ffffffffffff");
        iRes2 = dc_load_key_hex(icdev1, 0, 1, keydata);
        if (iRes2 != 0)
        {
            Response.Write("Error loadkey");

        }
        //获取序列号
        iRes3 = dc_card(icdev1, 0,out snr1);
        if (iRes3 != 0)
        {
            Response.Write("Error loadkey");

        }
        else
        {
          
           Response.Write(snr1.ToString());

        }
        //设备验证
        iRes4 = dc_authentication(icdev1, 0, 1);
        if (iRes4 != 0)
        {
            Response.Write("Error loadkey");

        }
        //读取数据
        StringBuilder readdata = new StringBuilder();
        
        //Array readdata = 
        char[] readdata1 = new char[64];
        iRes5 = dc_read_hex(icdev1, 5, readdata);
        if (iRes5 != 0)
        {
            Response.Write(readdata[0].ToString());

        }
        else
        {

           
            

            Response.Write(readdata.ToString());


        }
        StringBuilder writedata = new StringBuilder("rrrrrrrrrrrr");

        //Array readdata = 

        iRes6 = dc_write(icdev1, 5, writedata);
        if (iRes6 != 0)
        {
            Response.Write("Error loadkey");

        }


    }
}
也能写进去,"rrrrrrrrrrrr"写进去之后,用C++程序运行数据是72007200720072007200720072007200 但是这个编码格式我不知道怎么处理。。。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,