递归火山软件开发平台

标题: 请教一个问题 [打印本页]

作者: tlshs    时间: 2022-11-16 09:46
标题: 请教一个问题
参考例子写了一个十六进制转十进制的代码,但有点搞不清原理:
来源文本=十六进制文本
循环(,7,n)
  字符名=取字符(来源文本,7,n)  //4个字节
  如果(字符名>='0'&&字符名<='9')
    字符值=字符名-'0'
  否则(字符名>='a'&&字符名<='f')
    字符值=10+字符名-'a'

其中:字符值=字符名-’0’
相当于
字符值=字符名,
字符值=10+字符名-’a’
相当于
字符值=字符名
,但直接用后者就出错,请高手,老师

解惑.
作者: tlshs    时间: 2022-11-21 08:48
这个问题难道还有点难吗?
作者: server    时间: 2022-11-21 15:30
应该没必要重复造轮子吧。
作者: tlshs    时间: 2022-11-22 14:24
我是想请教一下搞清其中的原理
作者: Xelloss0618    时间: 2022-11-22 14:53
你代码没发全,这个文本格式不如上截图。
就答你后几句吧。
首先,别以为字符 '0' 是等于 0,自己查 ASCII 表,字符 '0' 的十进制值是 48。
原理是字符'0'-'9'在 ASCII 里是连续的,把这些字符值减去48,就相当于数值 0-9。
后面'a'到'f'也一样,你自己看一下就明白了。
作者: tlshs    时间: 2022-11-23 09:07
谢谢回复,现在明白了




欢迎光临 递归火山软件开发平台 (https://bbs.voldp.com/) Powered by Discuz! X3.4