Показать сообщение отдельно
  #9 (permalink)  
Старый 15.01.2023, 15:15
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,754

Что то вроде такого
<body>
<script>
const sampleBits = 340282366920938463463374607431768211455n;
const toBinArr = (data) => {
	const binstr = data.toString(2);
	const len = binstr.length;
	const arr = [];
	let bb = 0;
	let shift = 0;
	for (let i=0; i<len; i++) {
		const bit = binstr.at(-i-1);
		if (bit === '1') 
			bb |= 1<<shift;
		shift ++;
		if (i%8 == 7) {
			arr.unshift(bb);
			bb=0;
			shift = 0;
		}
	}
	if (bb) arr.unshift(bb);
	return arr;
}
 
const saveBitArray = function (data, filename) {
	const binar = toBinArr(data);
	const buffer = new ArrayBuffer(binar.length);
	let bindata = new Uint8Array(buffer);
	for (let i=0; i<binar.length; i++) 
		bindata[i] = binar[i];
		
    const a = document.createElement("a");
    a.download = filename;
    document.body.append(a);
        
    a.style = "display: none";
        
    const blob = new Blob([buffer], {type: "octet/stream"});
    const url = window.URL.createObjectURL(blob);
    a.href = url;
    a.click();
    window.URL.revokeObjectURL(url);
    a.remove();
};
 
saveBitArray(sampleBits, 'examplebin');
</script>
</body>
Ответить с цитированием