用 APDU 和布尔重写函数
Re writing Funcition with APDU & Boolean
我需要一些帮助
我需要这个函数return一个布尔值,如果 while 被执行或没有。
你能帮帮我吗?
让我们重写 API 中的 APDU 示例,因为它显然已损坏。它会在不需要时生成一个单独的请求 receiveBytes
。
public boolean receiveIncomingFNEL(APDU apdu) {
byte[] buf = apdu.getBuffer();
short bytesRead = apdu.setIncomingAndReceive();
// NOTE: we must always call setIncomingAndReceive() first
short offsetCdata = apdu.getOffsetCdata();
short bytesLeft = apdu.getIncomingLength() - bytesRead;
boolean receiveBytesRequired = true;
while (true) {
// --- do something with the bytes in buf, offsetCdata and bytesRead here
if (bytesLeft <= 0) {
receiveBytesRequired = false;
break;
}
bytesRead = apdu.receiveBytes(offsetCdata);
bytesLeft -= bytesRead;
}
// --- do other stuff
return receiveBytesRequired;
}
while()
循环中的 if
& break
语句有点奇怪,但这是我能想到的唯一方法APDU 缓冲区和调用 receiveBytes()
的部分。这是因为 setIncomingAndReceive()
在调用中包含一个 receiveBytes()
(欢迎创建正常 while
循环的想法)。
我需要一些帮助
我需要这个函数return一个布尔值,如果 while 被执行或没有。
你能帮帮我吗?
让我们重写 API 中的 APDU 示例,因为它显然已损坏。它会在不需要时生成一个单独的请求 receiveBytes
。
public boolean receiveIncomingFNEL(APDU apdu) {
byte[] buf = apdu.getBuffer();
short bytesRead = apdu.setIncomingAndReceive();
// NOTE: we must always call setIncomingAndReceive() first
short offsetCdata = apdu.getOffsetCdata();
short bytesLeft = apdu.getIncomingLength() - bytesRead;
boolean receiveBytesRequired = true;
while (true) {
// --- do something with the bytes in buf, offsetCdata and bytesRead here
if (bytesLeft <= 0) {
receiveBytesRequired = false;
break;
}
bytesRead = apdu.receiveBytes(offsetCdata);
bytesLeft -= bytesRead;
}
// --- do other stuff
return receiveBytesRequired;
}
while()
循环中的 if
& break
语句有点奇怪,但这是我能想到的唯一方法APDU 缓冲区和调用 receiveBytes()
的部分。这是因为 setIncomingAndReceive()
在调用中包含一个 receiveBytes()
(欢迎创建正常 while
循环的想法)。