首页 > 试题广场 >

Store IPV6 address into intege

[编程题]Store IPV6 address into intege
  • 热度指数:113 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解

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.
示例1

输入

0:001:000:02:0000:A:FFFF:FFFF

输出

1 2 10 -1
我是python小白。。。
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")


发表于 2021-04-08 16:36:17 回复(0)
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()


发表于 2019-05-21 21:07:36 回复(0)