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()