Python语法 - 两个较少的符号和一个等号是什么意思

时间:2016-05-26 22:41:35

标签: python syntax numeric

我搜索了一个将WINAPI FILETIME值转换为UNIX time_t(对于新的Golang项目)的示例,并找到了example in Python

虽然我过去在Python中编写了许多代码,但我不知道该示例中的<<=|=语法,并且Googles无法为这些搜索语句生成可用的结果。

有人可以向我解释他们的所作所为吗?

import datetime

_FILETIME_null_date = datetime.datetime(1601, 1, 1, 0, 0, 0)
def FiletimeToDateTime(ft):
    timestamp = ft.dwHighDateTime
    timestamp <<= 32
    timestamp |= ft.dwLowDateTime
    return _FILETIME_null_date + datetime.timedelta(microseconds=timestamp/10)

2 个答案:

答案 0 :(得分:3)

这取自C.这是'&lt;&lt;&lt;或'|'运算符(按位左移和按位或分别加上赋值运算符):

a <<= b

相同
a = a << b

同样适用于| =。

答案 1 :(得分:2)

它们是位移运算符<<的增强赋值版本和按位或|,就像+=是增强的+一样,所以:

timestamp <<= 32

相当于

timestamp = timestamp << 32