Input a hexadecimal IPV6 address, store it into 4 integers and output them.
Input a hexadecimal IPV6 address, store it into 4 integers and output them.
The input data contains 8 groups of colon-separated numbers(letters are uppercase), each group has 4 numbers(leading 0 can be omitted or not), all in hexadecimal.
The output contains 4 integers(without leading zeros) separated by spaces.
0:001:000:02:0000:A:FFFF:FFFF
1 2 10 -1
def trans(v): if v&0x80000000 : return v-4294967296 else : return v a=list(input().strip().split(':')) for i in range(8): a[i]=a[i].zfill(4) print(trans( int((a[0]+a[1]),16) ),end=" ") print(trans( int((a[2]+a[3]),16) ),end=" ") print(trans( int((a[4]+a[5]),16) ),end=" ") print(trans( int((a[6]+a[7]),16) ),end="\n")
def change(s): """ 将补码形式的8位16进制数 转化为10进制数 :param s: :return: """ num = int(s, 16) if s[0] == '8' or s[0] == 9 or 'A' <= s[0] <= 'F': return num - 2 ** 32 return num def solve(s): s = list(map(lambda x: x.rjust(4, '0'), s.split(':'))) # 分隔字符串,补充前导0 res = [] for i in range(4): res.append(''.join(s[i * 2:i * 2 + 2])) res = [str(change(x)) for x in res] return res def main(): s = input() ans = ' '.join(solve(s)) print(an***ain()