데이터베이스에서 값을 처리할 때 INT 형으로 되어있는 값들은 처리속도가 빠르다. IP, MAC, 문자열, DATETIME, PORT 등을 INT 형으로 바꿔 데이터베이스에 삽입할 수 있다. (단, 입력값은 모두 문자열이여야 함)


  • IP to INT
1
2
3
4
5
6
7
8
def ip2int(ip):
    try:
        #print("IP : %s    Type : %s" % (ip, type(ip)))
        return struct.unpack("!I", socket.inet_aton(ip))[0]
    except:
        #print(traceback.print_exc())
        #print(ip)
        return ''
cs



IP

2진수 → 16진수

INT

127.0.0.1

0b01111111000000000000000000000001

\x7f\x00\x00\x01

2130706433


  • MAC to INT
1
2
3
4
5
6
7
def mac2int(mac):
    try:
        return int(mac.replace(':'''), 16)
    except:
        #print(traceback.print_exc())
        return ''
 
cs


MAC

변환을 위한 치환

INT

AA:BB:CC:DD:EE:FF

AABBCCDDEEFF

187723572702975


  • ACTION to INT
1
2
3
4
5
def act2int(string):
    if '문자1' in string:
        return 1
    elif '문자2' in string:
        return 0
cs

- 0 또는 1로 나타냄으로써 해당 문자열에 대해 숫자로 표현이 가능하다.


  • DATETIME to INT
1
2
3
def date2int(date):
    time = datetime.datetime.strptime(date, '%Y-%m-%d %H:%M:%S')
    return int(time.timestamp())
cs


DATETIME

문자열 → DATETIME

INT

2019-12-31 15:12:15

datetime.datetime(2019, 12, 31, 15, 12, 15)

time.timestamp() : 1577772735


  • PORT to INT
1
2
def port2int(port):
    return int(port)
cs

- PORT 자체는 '12345' 와 같이 들어온 문자 자체가 INT 형태이므로 특별한 처리 없이 바로 INT 형으로 변환했다.


'공부 > Python' 카테고리의 다른 글

python venv 설치방법  (0) 2019.11.05
[암호] Vigenere  (0) 2019.02.09
[전자서명]Python OpenSSL  (0) 2018.07.17

+ Recent posts