printf in microblaze for hex to char

时间:2013-11-13 20:51:52

标签: c printf xilinx microblaze

我在for循环中尝试xil_printf()并通过uart将其提供给SendBuffer。 如何打印字符而不是整数?所有打印都是十六进制数......

uint32_t IRAM;
for(Index=0; Index<tsize; Index++){
  int sb = Index*sizeof(uint32_t);
  IRAM = XIo_In32(RAMADD+sb);
  xil_printf("Data: %08x\n\r",IRAM);
}

打印十六进制字符:

Data: 00004241
Data: 00004443
Data: 00004645
Data: 00004847

我试过了:

xil_printf("Data: %08c\n\r",IRAM)

并打印单个字符:

Data: A
Data: C

如何打印以下内容(将十六进制字符4241转换为AB,4443转换为CD等...)

Data: AB
Data: CD

1 个答案:

答案 0 :(得分:3)

您需要打印两个字节/字符,因此您可以使用格式字符串显式指定它:

xil_printf("Data: %c%c\n\r", char1, char2);

但首先你需要计算要打印的字节数。例如:

int char1 = (IRAM >> 8) & 0xff;
int char2 = IRAM & 0xff;

(可能切换char1&lt; - &gt; char2;我不确定你要打印它们的顺序)