2017-05-06 62 views
-6

我有这个C代码。请有人可以解释这个代码?C代码,是什么意思?

char szTemp[100]; 
unsigned char atr[40]; 
uint32_t uiApdu= 0; 
len = sizeof(atr); 
memset(szTemp, 0, sizeof(szTemp)); 

for (y = 0; y < len; y++){ 
    sprintf(szTemp + strlen(szTemp), "%02X", atr[y]); 
} 

特别是,这是什么意思?

for (y = 0; y < len; y++){ 
     sprintf(szTemp + strlen(szTemp), "%02X", atr[y]); 
    } 
+0

它创建一个字符串表示形式的'atr'的内容作为十六进制数字序列。每次循环时,它会将两个新字符附加到存储在'szTemp'中的字符串的末尾。这假定'len'已经定义了某处(它没有在你提供的sniipet中定义),并且'atr'已经在循环之前被初始化或赋值。 –

+0

我已经更新了代码。 –

+0

这意味着代码是做[Shlemiel的算法(http://wiki.c2.com/?ShlemielThePainter)。 – pmg

回答

-1

后每sprintf的长度(strlen的(szTemp))szTemp的将被增加2,所以从ATR 40个字节得到写入szTemp以十六进制形式

ATR阵列不具有任何值因此其基本持有垃圾值

+0

我可以知道downvote的原因吗? – Pras