【发布时间】:2017-07-21 08:30:28
【问题描述】:
我的挑战是将十六进制值转换为 ascii,输入是指向 uint8 的指针,因此我需要逐字节转换,并且还有一个大小输入(字节数),输入都是十六进制值,请帮我找出我的代码有什么问题。
输出始终为 0
uint8 ReferenceNumber[8] = {0x30,0x40,0x60,0x50,0x80,0x60,0x75,0x95};
HexToAscii(&ReferenceNumber[0], output, 8);
static void HexToAscii(uint8* input, uint8 *output, uint8 size)//No of bytes
{
uint8 i, temp;
for(i=1; i<=size; i++)
{
temp = (*(input)) >> (4*(i-1));
temp &= 0x0F;
temp +='0';
if (temp >= (10+'0'))
{
temp += ('A'-10-'0');
}
*(output+size-i) = temp;
}
}
【问题讨论】:
-
输入是什么,实际结果和预期结果是什么?通过调试你的代码你发现了什么?
-
你想把十六进制转换成字符吗?
-
你期望什么输出?
-
提示:“0123456789ABCDEF”
-
*(输出+size-i) = temp;你为什么要交换末端?