将byteArray转换为字符串 我是C++初学者,想从读卡器获得输出: 为此,我使用了一个DLL。我的问题是,我的响应返回一个byteArray,我想将其转换为普通字符串。因此,我目前的实际代码是: res = CT_data(ctn, &dad, &sad, 5, command, &lenr, response); printf("\nThe Response: %s", response);

将byteArray转换为字符串 我是C++初学者,想从读卡器获得输出: 为此,我使用了一个DLL。我的问题是,我的响应返回一个byteArray,我想将其转换为普通字符串。因此,我目前的实际代码是: res = CT_data(ctn, &dad, &sad, 5, command, &lenr, response); printf("\nThe Response: %s", response);,c++,cardreader,C++,Cardreader,这将打印到我的控制台: The Response: ò 但是在文档中,它说如果与设备的连接正常,它应该返回9500或9000 所以我想我必须转换响应!我该怎么做?谢谢 从文件中: ctn:整数,16位,无符号(内部终端NUMMER aus CT_INIT) dad:整数,8位,无符号(目标地址) sad:整数,8位,无符号(源地址) lenc:16位整数,无符号(Länge des Commandos) 突击队:字节数组(Kommando) lenr:16位整数,无符号(朗格响应) 响应:字节

这将打印到我的控制台:

The Response: ò
但是在文档中,它说如果与设备的连接正常,它应该返回
9500
9000

所以我想我必须转换
响应
!我该怎么做?谢谢

从文件中:

ctn:整数,16位,无符号(内部终端NUMMER aus CT_INIT)
dad:整数,8位,无符号(目标地址)
sad:整数,8位,无符号(源地址)
lenc:16位整数,无符号(Länge des Commandos)
突击队:字节数组(Kommando)
lenr:16位整数,无符号(朗格响应)
响应:字节数组(Antwort)
NSACCESS:整数,8位,有符号(0=Erfolgreich,-1=Fehlerhaft)

Wenn nSuccess=0,dann response[]prüfen。Wenn response=9000或9500战争数据重置为erfolgreich。卡特纳福德隆酒店

typedef CHAR (WINAPI *CT_DATA) (USHORT, UCHAR*, UCHAR*, USHORT, UCHAR*, USHORT*, UCHAR*);

文档中提到的响应是否可以是2个十六进制字节?那么响应长度,即CT_data()调用的返回值应该是2;响应数组的第一个字节应为0x90或0x95,即144或149,而第二个字节应始终为0。不确定代码页中呈现ò的字节

您是否验证了
CT\u data()
实际工作=您是否检查了
res
返回值?与零不同的值表示存在问题,在这种情况下,
response
中的值可以作为无效值丢弃。@PhilipAllgaier我试图用
printf(“\n响应代码:+res”)检查它在命令之后,但不知何故它只打印到我的控制台:
响应代码:
,所以我不能100%确定它是否有效?你能告诉我如何测试它吗?谢谢@约翰史密斯
printf(“\n响应代码:%d”,res)
您可能希望提供函数调用中涉及的其他参数的定义,以及被调用函数的一些详细信息(例如,是否涉及字符串缓冲区?它们应该在调用站点分配,还是由函数分配并返回?是否指定了缓冲区长度?等等)您如何在代码中定义
响应
?从您在文章中添加的内容来看,它似乎应该是由调用方分配的缓冲区,由函数填充。此外,您是否将此缓冲区的正确长度值传递给了
CT\u data()
函数?也许通过我在问题中添加的docu,您可以进一步帮助我!谢谢我想你在文件上写的是:
die letzten beiden Bytes von Response auswerten:9000=Erfolgreich
,因为你是德国人!我很感激!也许你可以告诉我如何选择最后两个字节?谢谢,谢谢你的医生。所以响应长度是lenr指向的int。然后响应中的最后两个字节保存状态字节——记住,索引是基于0的,即lenr-1是最后一个:success=(响应[lenr-2]==0x95 | |响应[lenr-2]==0x90)&&response[lenr-1]==0@PeterSchneider:代码页显然是cp850(或cp858),其中ò位于0x95这是我的完整代码:
nSuccess = CT_data(ctn,dad,sad,lenc,command[],lenr,response[])  
typedef CHAR (WINAPI *CT_DATA) (USHORT, UCHAR*, UCHAR*, USHORT, UCHAR*, USHORT*, UCHAR*);