2023-12-26 23:57:28 +08:00
|
|
|
import { translate } from '@/plugins/i18n.plugin';
|
|
|
|
|
2023-10-16 00:57:47 +02:00
|
|
|
export { convertTextToAsciiBinary, convertAsciiBinaryToText };
|
|
|
|
|
|
|
|
function convertTextToAsciiBinary(text: string, { separator = ' ' }: { separator?: string } = {}): string {
|
|
|
|
return text
|
|
|
|
.split('')
|
|
|
|
.map(char => char.charCodeAt(0).toString(2).padStart(8, '0'))
|
|
|
|
.join(separator);
|
|
|
|
}
|
|
|
|
|
|
|
|
function convertAsciiBinaryToText(binary: string): string {
|
|
|
|
const cleanBinary = binary.replace(/[^01]/g, '');
|
|
|
|
|
|
|
|
if (cleanBinary.length % 8) {
|
2023-12-26 23:57:28 +08:00
|
|
|
throw new Error(translate('tools.text-to-binary.invalidBinaryString'));
|
2023-10-16 00:57:47 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
return cleanBinary
|
|
|
|
.split(/(\d{8})/)
|
|
|
|
.filter(Boolean)
|
|
|
|
.map(binary => String.fromCharCode(Number.parseInt(binary, 2)))
|
|
|
|
.join('');
|
|
|
|
}
|