2013-07-02 41 views
0

我正在使用CAS SAGE。我有一個矢量v屬於GF(2)。我將如何能夠找到此矢量的整數表示形式?請舉例嗎?GF(2)中的二進制向量到整數

aux = random_matrix(GF(2), n,2*n) 
for i in range(2*n): 
    x = ZZ(list(aux[:,i]), base=2) 

回答

2

假設我理解你,你有一個載體住在了GF空間(2):

sage: V = VectorSpace(GF(2), 5) 
sage: V 
Vector space of dimension 5 over Finite Field of size 2 
sage: v = V.random_element() 
sage: v 
(0, 1, 0, 1, 1) 

有很多方法將其轉換爲一個Integer,和許多同樣有效的表示。一個自然的將是:

sage: i = ZZ(list(v), base=2) 
sage: i 
26 
sage: parent(i) 
Integer Ring 
sage: i.digits(2) 
[0, 1, 0, 1, 1] 
+0

我不能得到這個。我用我的代碼編輯我的問題。錯誤是TypeError:無法強制到一個整數 – Juan

+1

@Juan:通過使用'aux [:,i]',你得到一個柱狀矩陣,而不是一個向量。 '打印類型(aux [:,i])'說服自己這是真的。所以'list(aux [:,i])'產生類似'[(0),(1),(1),(1),(0)]'而不是你想要的東西。 IOW,你的水平太高了;您需要GF(2)的元素列表,而不是集合列表。嘗試像'ZZ(list((aux [:,i] .T)[0]),2)''。 – DSM

+0

.T的功能是什麼? – Juan