关于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#