tlshs 发表于 2022-11-16 09:46:13

请教一个问题

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

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

解惑.

tlshs 发表于 2022-11-21 08:48:24

这个问题难道还有点难吗?

server 发表于 2022-11-21 15:30:16

应该没必要重复造轮子吧。

tlshs 发表于 2022-11-22 14:24:59

我是想请教一下搞清其中的原理

Xelloss0618 发表于 2022-11-22 14:53:40

你代码没发全,这个文本格式不如上截图。
就答你后几句吧。
首先,别以为字符 '0' 是等于 0,自己查 ASCII 表,字符 '0' 的十进制值是 48。
原理是字符'0'-'9'在 ASCII 里是连续的,把这些字符值减去48,就相当于数值 0-9。
后面'a'到'f'也一样,你自己看一下就明白了。

tlshs 发表于 2022-11-23 09:07:24

谢谢回复,现在明白了
页: [1]
查看完整版本: 请教一个问题