2013-10-29 29 views
8

Sayı dizisini ikili sayıya nasıl dönüştürebilirim? Örneğin:Sayı dizisini ikili bir sayıya dönüştürme

a=[1 0 1 0 1 0] 

Ben bir ikili sayı

b=101010

o gevreksiz yapmak mümkün mü dönüştürmek istersiniz?

+0

Yapmak istediğiniz her şeyi yapmak için bir dize gösterimi kullanmak yerine, 'biti 'işlevlerini ve ayrıca bkz. Henüz bir dava görmedim, dize temsili ile çalışmak gerçekten gerekli, buna rağmen insanlar her zaman böyle şeyler soruyorlar. Artı, dizelerle çalışmak daha yavaş ve daha fazla bellek yer. – sebastian

cevap

19

Belki bu istediğini geçerli:

char(a+'0') 

Örnek:

Bu onun ASCII kodu ( +'0') her numarayı dönüştürülmesi ve daha sonra bir karşı çıkan sayıların vektör dönüştürerek çalışır
>> a=[1 0 1 0 1 0] 

a = 

    1  0  1  0  1  0 

>> char(a+'0') 

ans = 

101010 

dize (char()).

+2

ASCII'nin özelliklerine bağlı kalmaktan kaçınmak için bir alternatif 'bindig =' 01 '; bindig (a + 1) '. –

+3

Ve hız bir endişe ise, 'char (a + 48)' daha hızlı olabilir. (Octave'de iki kat hızlı) – Dan

+0

+1 Awesome trick – rayryeng

7

Bir dizeye dönüştürebilirsiniz: Bence

sprintf('%d',a) 

Mantıksal bölümler dizisi için tek alternatiftir.

+1

Güzel, ama en iyi alternatif değil :) –

+0

@EitanT: Bu alternatifin nesi var? – Daniel

+1

@DanielR, "char" ile karşılaştırıldığında bir overkill. –

İlgili konular