Untitled

 avatar
unknown
plain_text
21 days ago
2.0 kB
3
Indexable
import ipaddress

def get_ip_class(ip):
    first_octet = int(ip.split('.')[0])
    if 1 <= first_octet <= 126:
        return 'Class A'
    elif 128 <= first_octet <= 191:
        return 'Class B'
    elif 192 <= first_octet <= 223:
        return 'Class C'
    elif 224 <= first_octet <= 239:
        return 'Class D'
    elif 240 <= first_octet <= 255:
        return 'Class E'
    else:
        return 'Invalid IP'

def get_ip_class_abc(ip):
    first_octet = int(ip.split('.')[0])
    if 1 <= first_octet <= 126:
        return 'Class A'
    elif 128 <= first_octet <= 191:
        return 'Class B'
    elif 192 <= first_octet <= 223:
        return 'Class C'
    else:
        return 'Not in Class A, B, or C'

def ip_to_32bit(ip):
    try:
        packed_ip = int(ipaddress.IPv4Address(ip))
        return f'{packed_ip:032b}'
    except ipaddress.AddressValueError:
        return 'Invalid IP Address'

def bit_stuffing(data):
    stuffed = ''
    count = 0
    for bit in data:
        if bit == '1':
            count += 1
        else:
            count = 0
        stuffed += bit
        if count == 5:
            stuffed += '0'
            count = 0
    return stuffed

def bit_de_stuffing(stuffed):
    data = ''
    count = 0
    for bit in stuffed:
        if bit == '1':
            count += 1
        else:
            count = 0
        data += bit
        if count == 5:
            if len(data) > 0 and data[-1] == '0':
                data = data[:-1]
            count = 0
    return data

# Test cases
ips = ['192.168.1.1', '10.0.0.1', '172.16.0.1', '224.0.0.1', '255.255.255.255']
for ip in ips:
    print(f'IP: {ip}, Class: {get_ip_class(ip)}')
    print(f'IP: {ip}, Class ABC: {get_ip_class_abc(ip)}')
    print(f'IP: {ip}, 32-bit format: {ip_to_32bit(ip)}')

bit_data = '011111101111110'
stuffed = bit_stuffing(bit_data)
de_stuffed = bit_de_stuffing(stuffed)
print(f'Original Data: {bit_data}')
print(f'Stuffed Data: {stuffed}')
print(f'De-stuffed Data: {de_stuffed}')

Editor is loading...
Leave a Comment