win0006 发表于 2009-3-16 15:26:00

[求助]请帮忙给个十六进制转十进制的程序

请帮忙给个十六进制转十进制的程序,谢谢啦

Saging 发表于 2009-3-17 16:24:00

(defun hex2ocx(hex)<br/>&nbsp; (setq hex_len (strlen hex)); hex_len=len(hex)<br/>&nbsp; (setq i 0);i=0<br/>&nbsp; (setq ocx 0);ocx=0<br/>&nbsp; (while (&gt; hex_len 0);while hex_len &gt;=0<br/>&nbsp;&nbsp;&nbsp; (setq m_hex (substr hex hex_len 1));m_hex=mid(hex,hex_len,1)<br/>&nbsp;&nbsp;&nbsp; (if (and (&gt;= m_hex "a") (&lt;= m_hex "f")) (setq tmp (- (ascii m_hex) 87)));if m_hex&gt;="a" and m_hex &lt;="f"&nbsp;&nbsp; tmp=asc(m_hex)-87<br/>&nbsp;&nbsp;&nbsp; (if (and (&gt;= m_hex "A") (&lt;= m_hex "F")) (setq tmp (- (ascii m_hex) 55)));if m_hex&gt;="A" and m_hex &lt;="F"&nbsp;&nbsp; tmp=asc(m_hex)-55<br/>&nbsp;&nbsp;&nbsp; (if (and (&gt;= m_hex "0") (&lt;= m_hex "9")) (setq tmp (atoi m_hex)));if m_hex&gt;="0" and m_hex &lt;="9"&nbsp;&nbsp; TMP=VAL(m_hex)<br/>&nbsp;&nbsp;&nbsp; (SETQ OCX (+ ocx (* tmp (expt 16 i))));计算N进制转10进制为:ocx=m*n^i-1+ocx&nbsp; //i为m所处N进制的位数,如个位为1<br/>&nbsp;&nbsp;&nbsp; (setq i (1+ i))<br/>&nbsp;&nbsp;&nbsp; (setq hex_len (1- hex_len))<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp; ocx<br/>&nbsp; )

Saging 发表于 2009-3-17 16:31:00

<p>(SETQ OCX (+ ocx (* tmp (expt 16 i))))</p><p>将这句里的"16"改成其它数可算出你要的任意进制的十进制数.</p><p>如改为"8",可计算八进制,如改为"2"可计算二进制.当然,上面的判断代码要进行相应的修改,</p><p>还有,程序的参数应该是字符串类型.</p>
页: [1]
查看完整版本: [求助]请帮忙给个十六进制转十进制的程序