如何解决从固定字节 [] 数组中读取字节
我需要使用一个包含结构体的 DLL:
unsafe public struct RESPONSE2
{
// some other stuff...
public THERSP TheRsp;
// some other stuff...
};
unsafe public struct THERSP
{
// some other stuff...
public TRANSACTIONINFO Transaction;
};
unsafe public struct TRANSACTIONINFO
{
// some other stuff...
public fixed byte CardName[17];
// some other stuff...
}
现在,当我得到信息时,我需要从 TRANSACTIONINFO 读取信息。 DLL 具有获取响应的功能,所以我得到的响应如下
RESPONSE2 rsp = new RESPONSE2();
int x = getRsp(ref rsp);
使用 DLL
[DllImport("thedll.dll",CallingConvention = CallingConvention.StdCall)]
public static extern int getRsp(ref RESPONSE2 Response);
现在这工作正常,但我无法从 TRANSACTIONINFO.CardName 中读出字节
我试过狐狸的例子: 我期望的解码值是 VISA。
1.
var name = Marshal.PtrToStringAnsi(new IntPtr(rsp.TheRsp.Transaction.CardName));
这给了我“V”的结果,其他字节都丢失了。
2.
byte[] test_card = new byte[17];
int i = 0;
while (i < 17)
{
test_card[i] = rsp.TheRsp.Transaction.CardName[i];
i++;
}
这正确地给了我第一个字节,但所有其他字节都是 0x00。
3.
unsafe
{
byte* ptr = rsp.TheRsp.Transaction.CardName;
{
byte[] bytes = new byte[17];
int index = 0;
byte* counter = ptr;
while(*counter != 0x00)
{
bytes[index] = *counter;
index++;
counter++;
}
string name = Encoding.ASCII.GetString(bytes,17);
}
}
这也给了我结果“V”。
那么问题是,我如何读取所有 CardName 字节?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。