相关疑难解决方法(0)

如何使用_small_代码空间减少十六进制ASCII字符转换的代码空间?

如何使用小代码空间减少十六进制ASCII字符转换的代码空间?

在嵌入式应用程序中,我有非常有限的空间(注1).我需要将字节从串行I/O转换为ASCII值'0'到'9'和'A'到'F'到通常的十六进制值0到15.此外,所有其他240种组合,包括' a'到'f',需要被检测到(作为错误).

图书馆的功能,例如scanf(), atoi(), strtol()太大而不能使用.

速度不是问题.代码大小是限制因素.

我现在的方法将256字节代码重新映射成256个代码,使得"0"到"9"和"A"到"Z"具有0到35的值.关于如何减少或不同方法的任何想法都是值得 赞赏的.

unsigned char ch = GetData(); // Fetch 1 byte of incoming data;
if (!(--ch & 64)) {           // decrement, then if in the '0' to '9' area ...
  ch = (ch + 7) & (~64);      // move 0-9 next to A-Z codes
}
ch -= 54;                     // -= 'A' - 10 - 1
if (ch > 15) { 
  ; // handle error …
Run Code Online (Sandbox Code Playgroud)

embedded pic bootloader

6
推荐指数
1
解决办法
1035
查看次数

标签 统计

bootloader ×1

embedded ×1

pic ×1