我搜索了一个将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)
答案 0 :(得分:3)
这取自C.这是'&lt;&lt;&lt;或'|'运算符(按位左移和按位或分别加上赋值运算符):
a <<= b
与
相同a = a << b
同样适用于| =。
答案 1 :(得分:2)
它们是位移运算符<<
的增强赋值版本和按位或|
,就像+=
是增强的+
一样,所以:
timestamp <<= 32
相当于
timestamp = timestamp << 32