Apakah ada cara untuk membaca data biner di JavaScript?

Saya ingin inject data biner menjadi obyek dalam JavaScript. Apakah ada cara untuk melakukan hal ini?

yaitu

var binObj = new BinaryObject('101010100101011');

Sesuatu yang berlaku. Bantuan akan menjadi besar.

Anda dapat menggunakan parseInt:

var bin = parseInt('10101010', 2);

Argumen kedua (radix) adalah dasar dari input.

Komentar (8)

Ada's ini biner ajax library dijelaskan di sini dan di sana's juga biner yang lain perpustakaan parser yang dapat menangani lebih banyak tipe data.

Anda juga bisa melihat di Google Gears yang memiliki biner Gumpalan objek atau lihatlah membuat javascript wrapper untuk Flash yang menyediakan asli ByteArray pelaksanaan.

Atau... anda dapat duduk dan menunggu dan berharap bahwa semua hal ini menjadi standar :)

Komentar (2)

Pada semua browser terbaru yang dapat anda lakukan:

xhr.overrideMimeType('text/plain; charset=x-user-defined');

Dan mengambil sebuah string. Untuk mendapatkan hasil biner anda akan memiliki untuk melakukan

data.charCodeAt(pos) & 0xff;

Pada malam membangun dari Firefox dan Chrome, anda dapat mengambil nilai sebagai ArrayBuffer

xhr.responseType = "arraybuffer";

Hasilnya kemudian dapat diakses di sana

xhr.mozResponseArrayBuffer // Firefox
xhr.response // Chrome

Kemudian anda dapat menerapkan TypedArray (misalnya: Int32Array) atau DataView pada buffer untuk membaca hasilnya.


Dalam rangka untuk membuat proses ini lebih mudah, saya membuat jQuery Patch untuk mendukung biner jenis dan DataView Wrapper yang menggunakan terbaru yang tersedia membaca fitur dari browser.

Komentar (3)

JavaScript memiliki sangat sedikit dukungan untuk raw data biner. Secara umum,'s terbaik untuk hidup dalam pembatasan ini. Namun, ada's trik I'm mengingat berusaha untuk proyek tambang yang melibatkan memanipulasi besar bitmap untuk melakukan operasi set di OLAP database. Ini tidak't bekerja di IE.

Ide dasarnya adalah ini: memaksa biner data ke PNG untuk mengirimkannya ke JavaScript, misalnya, bitmap mungkin menjadi hitam dan putih PNG, dengan warna hitam yang 100% transparan. Kemudian menggunakan Kanvas operasi untuk melakukan bitwise manipulasi data.

The HTML5 Canvas termasuk pixel array type, yang memungkinkan akses ke byte dalam sebuah gambar. Canvas juga mendukung compositing operasi, seperti XOR. Meringankan dan menggelapkan harus mampu melakukan DAN dan ATAU. Operasi ini kemungkinan akan dioptimalkan dengan baik di semua browser yang mendukung mereka-mungkin menggunakan GPU.

Jika ada yang mencoba ini, tolong beritahu saya tahu seberapa baik kerjanya.

Komentar (1)

Di masa depan anda akan dapat menggunakan ArrayBuffers dan File Gumpalan API.

Komentar (0)

Itu akan menjadi cara lain... pow dan squareroot mungkin bisa dihitung dengan Matematika-Kelas... aku don't tahu apakah itu adalah cara tercepat, tapi itu's secepat Kalkulator Windows di "Programmer View".

AlertFormatedBin();
function AlertFormatedBin()
{
    var vals = decToBinArr(31,8);
    var i;

    var s = "";
    var mod = vals.length % 4;
    for(i= 0; i 0)
        s+=" ";
    var j = i;
    for(i;i 1)
    {
        dec-=mod;
        var bd = squareRootRoundedDown(dec);
        if(minSize && minSize-1 > bd)
            bd = minSize-1;
        else
            var i;
            for(i = bd; i>0;i--)
            {
                var nxt = pow(2,i);
                if(dec >= nxt)
                {
                    r[i] = 1;
                    dec-=nxt;
                }
                else
                {
                    r[i] = 0;
                }
            }
    }
    r[0]= mod;
    r.reverse();
    return r;
}

function squareRootRoundedDown(dec)
{
    if(dec=dec)
        {
            i = x == dec ? i : i-1;
            break;
        }
        x= x*2;
    }
    return i;
}

function pow(b,exp)
{
    if(exp == 0)
        return 0;
    var i = 1;
    var r= b;
    for(i = 1; i < exp;i++)
        r=r*b;
    return r;
}
Komentar (0)

Seperti @Zippy kemukakan dalam komentar, lebih baru-baru ini (akhir 2016) solusi meliputi:

Komentar (0)

Persen encoding dapat unescape senar ke 1 langsung<->1 representaion biner gumpalan dan juga portabel di browser;

unescape("%uFFFF%uFFFF%uFFFF");

Kebanyakan browser exploit's menggunakan teknik ini untuk embedding shellcode ke halaman HTML, ia bekerja dengan sangat baik untuk menciptakan sewenang-wenang biner sungai.

Komentar (0)

jBinary "membuatnya mudah untuk membuat, beban, mengurai, memodifikasi dan menyimpan kompleks biner file dan struktur data di kedua browser dan Node.js."

Aku ingin't digunakan, tapi itu's apa yang saya temukan ketika mengajukan pertanyaan yang sama ditanyakan di sini...

Komentar (0)

Javascript doesn't menyediakan mekanisme untuk memuat objek dalam bentuk apapun selain dari string sederhana.

Terdekat yang dapat anda lakukan adalah serialisasi objek string, opsional enkripsi/mengompresi, mengirimnya ke browser, dan mendekripsi/dekompresi jika diperlukan, pemeriksaan untuk kewarasan, eval() dan berdoa().

Alih-alih menggunakan eval (yang tidak cukup aman), anda dapat menggunakan format anda sendiri (atau, xml atau json yang ada banyak libs) dan mengurai diri sendiri.

Sebagai catatan, jika anda ingin ini untuk kebingungan setelah browser mendapatkan data yang dapat digunakan (setelah dekripsi/dekompresi), itu terlalu mudah untuk menghindari.

Komentar (1)

Selamat datang semua orang yang ditemukan ini lebih tua posting di Google. Saya menemukan solusi yang bekerja di Chrome sebagai 2019, jadi mudah-mudahan ini adalah hanya beberapa fitur tambahan atau sesuatu yang kebanyakan orang tidak terjawab.

Anda dapat menggunakan 0b prefiks ke nomor anda. Itu tidak't cukup mendapatkan representasi biner, tetapi anda dapat dengan mudah dikonversi ke integer untuk penyimpanan. Misalnya, anda bisa menyimpan bilangan biner 1010 seperti:

var binNum = 0b1010 //Stores as an integer, which would be 10

Jika anda're penasaran, ia juga bekerja untuk heksadesimal dengan 0x awalan:

var binNum = 0x1010 //Stores as an integer, which would be 4112
Komentar (0)