0

我正在向智能卡写入一些数据。

当我想在卡上存储一个十六进制字符串时,你可以看看这是如何完成的:格式化和写入数据——从这篇文章中也可以看出我没有字节序问题。

鉴于此,并且通常数据存储在设备上,如下所示:

unsigned char sendBuffer[20]; // This will contain the data I want to store + some header information

sendBuffer[0]=headerInfo;
sendBuffer[1]=data[0]; // data to store, byte array; should be 16 bytes or multiple of 16
sendBuffer[2]=data[1];
...
sendBuffer[16]=data[15];

现在,我们调用 call:Send(sendBuffer, length).并完成,data被写入。上面的链接也提到了如何读回数据。

  • 我很感兴趣,说现在我想在卡上存储整数 153(十进制),我该怎么做?(我想我基本上必须将它嵌入到sendBuffer数组中,对吗?)

  • 或者如果我想存储/发送字符串:“Hello world 123xyz”,我该怎么做呢?

附言。另外我通常是接收者,我需要读回数据。并且根据我读取的内存块,我可能会提前知道我在那里存储的是 int 还是 string。

4

1 回答 1

-1

您似乎确实使这比需要的更复杂。因为从缓冲区读取或写入整数没有字节序问题,所以很容易。

// writing
*(int*)(sendBuffer + pos) = some_int;

// reading
some_int = *(int*)(sendBuffer + pos)

possendBuffer.

要将字符串复制到缓冲区或从缓冲区复制字符串,我只会strcpy在您的字符串被 nul 终止或memcpy不是时使用。例如

// writing
strcpy(sendBuffer + pos, some_string);

// reading
strcpy(some_string, sendBuffer + pos);

显然你必须小心你有可用的内存来存储字符串。

于 2013-09-20T08:36:57.300 回答