我如何代表Python中的N位矢量并使用?
-
23-09-2019 - |
题
在我目前正在进行的作业中,我们需要与位矢量一起工作,但是我不确定如何在Python中做到这一点。他们应该能够从4位到20位。我以前从未使用过Bit Vector,但是我想一个人会创建您使用常规和/或/或/XOR操作来操纵的无符号字节的数组。
这 重要的限制 这是:我不能依靠 任何 除标准Python提供的图书馆外。
我想我知道如何使用8位unsigned字节的阵列在C中执行此操作:例如,将第18位零数组变成一个,我会做类似my_bit_array [3]&= 1 << 2之类的事情
但是,由于Python是动态键入的,并且没有内置的数组类型,我该如何以Pythonic的方式进行操作?
是否有可能(如何?)表达大小20的位矢量?我正在考虑制作24位 / 3个字节向量并忽略4位。
解决方案
图书馆 BitVector 是为此目的的纯派库库,应满足您指定的需求。
其他提示
以下是用于在没有内容的情况下导出列表的PowerShell代码。
$web = Get-SPWeb -Identity "SiteUrl"
$list = $web.Lists["ListName"]
$list.SaveAsTemplate("File_Name.stp", "List_Template_Title",
"Description", $false);
. 这 比特雷 模块对布尔值有效地进行了操作。
我不认为目前这个问题有一个是版本的答案: http://community.office365.com/en-us/forums/154/t/74400.aspx
此工具说它将允许您迁移所有内容: http://www.metavistech.com/category/tools-office-365
然后在此期间,您可以执行以下操作,因为您迁移内容:
在Central Admin中,在场所,将MySite主机的位置更改为在线位置:应用程序管理>用户配置文件服务应用程序>我的网站设置>我的网站主机位置
这将将它们重定向到在线位置
,通过用户配置文件服务的用户权限关闭用户创建MySite的能力,对于ON的房屋
有点过时,但我将在这里留下另一个stdlib选项,只是为了进行比较。也很容易使用 CTYPES 模块。
例如:
是否有可能(如何?)表达大小20的位矢量?我正在考虑制作24位 / 3个字节向量并忽略4位。
class Simple(ctypes.LittleEndianStructure):
_pack_ = 1
_fields_ = [
('one', ctypes.c_ubyte, 8),
('two', ctypes.c_ubyte, 8),
('three', ctypes.c_ubyte, 8)
]
s = Simple(0, 2, 256)
bytearray(s) # bytearray(b'\x00\x02\x00')
s = Simple(0, 2, 255)
bytearray(s) # bytearray(b'\x00\x02\xff')
class Simple(ctypes.BigEndianStructure):
_pack_ = 1
_fields_ = [
('one', ctypes.c_ubyte, 8),
('two', ctypes.c_ubyte, 8),
('three', ctypes.c_ubyte, 8)
]
s = Simple(0, 2, 256)
bytearray(s) # bytearray(b'\x00\x02\x00')
s = Simple(0, 2, 255)
bytearray(s) # bytearray(b'\x00\x02\xff')
s.two |= 3
bytearray(s) # bytearray(b'\x00\x03\xff')
或这样更直接的东西:
class bit_vector(Structure):
_fields_ = [('bits', c_uint32, 24),
('unused', c_uint32, 8),
]
bv = bit_vector()
# turn on the 18th bit -- being explicit just to demo it
bv.bits |= int('000000000000000001000000', 2)
bin(bv.bits) # 0b1000000
利用 结构 模块。
还有纯净的python python-bitstring (带有Python 3支持)。