Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7126998
  • 博文数量: 655
  • 博客积分: 10264
  • 博客等级: 上将
  • 技术积分: 8278
  • 用 户 组: 普通用户
  • 注册时间: 2007-06-04 17:47
个人简介

ABAP顾问

文章分类

全部博文(655)

文章存档

2017年(2)

2014年(8)

2013年(3)

2012年(2)

2011年(18)

2010年(102)

2009年(137)

2008年(274)

2007年(134)

分类:

2008-03-23 22:17:59

REPORT  z_barry_hex_to_ip_addr .
 
DATA: hexhost(8) ,
      iptext(15) TYPE c ,
      p(6) TYPE p .
DATA: tid LIKE arfctid.
CALL FUNCTION 'ARFC_GET_TID'
  IMPORTING
    tid = tid.
hexhost = tid-arfcipid.
PERFORM hex2ipstr USING hexhost iptext .
WRITE / iptext .
 
CLEAR p.
PERFORM ip2dec USING iptext p.
WRITE / p .
 
CLEAR iptext.
PERFORM dec2ip USING p iptext.
WRITE / iptext.
 
*&---------------------------------------------------------------------*
*& 十六进制转换成IP
*&---------------------------------------------------------------------*
FORM hex2ipstr USING value(hexstr) TYPE c
                  ipstr TYPE c .
  DATA: hex TYPE x ,
        dec TYPE i ,
        ipstr_tmp TYPE string .
  CLEAR ipstr.
  DO 4 TIMES.
    hex = hexstr+0(2).
    dec = hex .
    ipstr_tmp = dec .
    CONCATENATE ipstr '.' ipstr_tmp INTO ipstr.
    SHIFT hexstr LEFT BY 2 PLACES .
  ENDDO.
  SHIFT ipstr .
ENDFORM.
 
*&---------------------------------------------------------------------*
*& IP转换成长整型
*&---------------------------------------------------------------------*
FORM ip2dec USING value(ipstr) TYPE c
                  num TYPE p .
*  ipstr= '192.168.0.1'.
  DATA: sum(6) TYPE p   ,
        s1 TYPE string  ,
        s2 TYPE string  .
  CLEAR num.
  s2 = ipstr .
  DO 4 TIMES.
    SPLIT s2 AT '.' INTO s1 s2.
    sum = sum + s1 * ( 256 ** ( 4 - sy-index ) ).
  ENDDO.
  num = sum.
ENDFORM.
 
*&---------------------------------------------------------------------*
*& 长整型转换为IP
*&---------------------------------------------------------------------*
FORM dec2ip USING value(num) TYPE p
                  ipstr TYPE c .
*  num = '3232235521'.
  DATA: iptmp TYPE string ,
        p(6) TYPE p DECIMALS 4 .
  CLEAR ipstr.
  DO 4 TIMES.
    p = num / ( 256 ** ( 4 - sy-index ) ) .
    iptmp = TRUNC( p ) .
    num = num - iptmp * ( 256 ** ( 4 - sy-index ) ) .
    CONCATENATE ipstr '.' iptmp INTO ipstr.
  ENDDO.
  SHIFT ipstr.
ENDFORM.
阅读(8840) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~