-1

如何将用户输入的任何字符转换为其相应的十进制值?我只是在开始时遇到了麻烦。

该程序必须实现以下目标:

  1. 该程序接受来自键盘的字符。

  2. 如果字符是数字('0' 到 '9'): a) 将字符转换为其对应的十进制值。换句话说,'0' 变为 0,'1' 变为 1,......'9' 变为 9。我们称该值为 R(表示“运行长度”)。b) 等待另一个字符(使用 GETC)。c) 将该字符的 R 个副本打印到控制台。) d) 返回步骤 1。

  3. 否则,如果字符是 Enter/Return (ASCII #10):将换行符 (ASCII #10) 打印到控制台,然后返回步骤 1。

  4. 否则,如果字符是其他字符,请停止程序。

4

1 回答 1

0

您将十进制数字字符转换为从中减去“0”(= 0x30)的数字。对于十六进制数字('A' 到 'F'):如果字符大于 '@',则从中减去 0x37('A' -> 0x0a)。对于十六进制数字('a'to 'f'):如果该值仍然大于 15,则从中减去 0x20 或者您可以使用表格进行映射。256 字节不是大表。

  • 您将结果(变量,寄存器,...)设置为零
  • 您在循环中逐个字符地阅读
  • 您将字符转换为新数字(一位数)
  • 如果它是无效的十六进制数字字符,则返回变量 - 你完成了
  • else 变量 = 变量 * 16 + 新数字
  • 乘以 16 可以通过左移 4 位来完成
于 2014-03-28T22:46:39.457 回答