精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● VFP>>〖数据处理〗>>Re:请问:在vfp6中如何把区位码转换为汉字?

主题:Re:请问:在vfp6中如何把区位码转换为汉字?
发信人: foxzz()
整理人: foxzz(2002-12-22 08:32:31), 站内信件
*!**********************
proc quwei
PARA P_SQUWEI


LOCAL M_ADDVFALUE
M_ADDVFALUE=HexToDec("A1")  

LOCAL M_LHIGH_10,M_LLOW_10
M_LHIGH_10=VAL(LEFT(P_SQUWEI,2))-1+M_ADDVFALUE
M_LLOW_10=VAL(SUBSTR(P_SQUWEI,3,2))-1+M_ADDVFALUE

LOCAL M_SHIGH_16,M_SLOW_16
M_SHIGH_16=DecToHex(M_LHIGH_10) 
M_SLOW_16=DecToHex(M_LLOW_10) 

LOCAL M_SALL_16
M_SALL_16=M_SHIGH_16+M_SLOW_16

LOCAL M_LALL_10
M_LALL_10=HexToDec(M_SALL_16)  


LOCAL M_CHR_LALL_10
M_CHR_LALL_10=CHR(M_LALL_10)

RETURN M_CHR_LALL_10



*!******************************  
FUNCTION HexToDec  
PARA p_hexnum  

p_hexnum=ALLTRIM(p_hexnum)  
m_lenhex=LEN(p_hexnum)  
m_decnum=0  
m_strnum=0  

FOR m_i= 1 TO m_lenhex  
    m_trnstr=SUBSTR(p_hexnum,m_lenhex-m_strnum,1)  
    m_trnstr=upper(m_trnstr)  
    DO CASE  
    CASE m_trnstr='A'  
         m_trnstr='10'  
    CASE m_trnstr='B'  
         m_trnstr='11'  
    CASE m_trnstr='C'  
         m_trnstr='12'  
    CASE m_trnstr='D'  
         m_trnstr='13'  
    CASE m_trnstr='E'  
         m_trnstr='14'  
    CASE m_trnstr='F'  
         m_trnstr='15'  
    ENDCASE  

    m_decnum=m_decnum+(VAL(m_trnstr) * 16^(m_i-1))  
    m_strnum=m_strnum+1  
ENDFOR  

RETURN m_decnum  

*!*********************************  
FUNCTION DecToHex  
PARAMETER p_decnum  

local m_hexnum,m_hexstr,m_string  
m_hexnum=0  
m_hexstr=""  
m_string=""  

DO WHILE p_decnum > 0  
   m_hexnum=mod(p_decnum,16)  
   DO CASE  
   CASE m_hexnum=10  
        m_string='A'  
   CASE m_hexnum=11  
        m_string='B'  
   CASE m_hexnum=12  
        m_string='C'  
   CASE m_hexnum=13  
        m_string='D'  
   CASE m_hexnum=14  
        m_string='E'  
   CASE m_hexnum=15  
        m_string='F'  
   OTHERWISE  
        m_string=STR(m_hexnum,1,0)  
   ENDCASE  
   m_hexstr=m_string+m_hexstr  
   p_decnum=INT(p_decnum/16)  
ENDDO  

RETURN m_hexstr  

[关闭][返回]