Общая формула для построения массива чисел из base-n

SharedPreferences.Editor editor = getSharedPreferences("identifier", 
MODE_PRIVATE).edit();
//identifier is the unique to fetch data from your SharedPreference.


editor.putInt("keyword", 0); 
// saved value place with 0.
//use this "keyword" to fetch saved value again.
editor.commit();//important line without this line your value is not stored in preference   

// fetch the stored data using ....

SharedPreferences prefs = getSharedPreferences("identifier", MODE_PRIVATE); 
// here both identifier will same

int fetchvalue = prefs.getInt("keyword", 0);
// here keyword will same as used above.
// 0 is default value when you nothing save in preference that time fetch value is 0.

вам нужно использовать SharedPreferences в AdapterClass или любом другом. в этот раз просто используйте это объявление и используйте ту же самую задницу выше.

SharedPreferences.Editor editor = context.getSharedPreferences("idetifier", 
Context.MODE_PRIVATE).edit();
SharedPreferences prefs = context.getSharedPreferences("identifier", Context.MODE_PRIVATE);

//here context is your application context

для строкового или логического значения

editor.putString("stringkeyword", "your string"); 
editor.putBoolean("booleankeyword","your boolean value");
editor.commit();

извлекают данные так же, как указано выше

String fetchvalue = prefs.getString("keyword", "");
Boolean fetchvalue = prefs.getBoolean("keyword", "");
0
задан Shidersz 16 January 2019 в 15:48
поделиться

1 ответ

Вы можете взять следующий подход в качестве отправной точки, в основном мне пришлось определить некоторые служебные методы:

  • mapToChar(n) отображает число n в представление символа, для Например, 10 отображается на «A».

  • convertToBaseN(n, base) преобразует число n в его представление по заданному base. Этот метод использует рекурсивный подход и использует предыдущий.

  • Наконец, generateNumbersOfBase(base, start, size) генерирует массив из size элементов, начиная с номера start для данного base.

КОД:

// Next utility method map a decimal number to a character representation.

const mapToChar = (n) =>
{
    n = (n >= 0 && n <= 9) ? '0'.charCodeAt() + n : n - 10 + 'A'.charCodeAt();
    return String.fromCharCode(n);
}

// Next utility method convert a decimal number to his base-n representation.

const convertToBaseN = (n, base, res = "") =>
{
    if (n <= 0)
       return (res && res.split("").reverse().join("")) || "0";

    // Convert input number to given base by repeatedly 
    // dividing it by base and taking remainder.

    res += mapToChar(n % base);
    return convertToBaseN(Math.floor(n / base), base, res);
}

// Next method generates an array of numbers for a given base.

const generateNumbersOfBase = (base, start, size) =>
{
    return Array(size).fill(0).map((x, idx) => convertToBaseN(start + idx, base));
}

// Finally, generate some arrays.

let base10Array = generateNumbersOfBase(10, 15, 5);
let base2Array = generateNumbersOfBase(2, 5, 9);
let base16Array = generateNumbersOfBase(16, 10, 12);
let base8Array = generateNumbersOfBase(8, 1, 12);

console.log(
    JSON.stringify(base10Array),
    JSON.stringify(base2Array),
    JSON.stringify(base16Array),
    JSON.stringify(base8Array),
);

Теперь, если вам нужно преобразовать некоторое представление base-n обратно в десятичное число, вы можете использовать следующий подход:

const convertToDec = (str, base) =>
{
    let codeA = 'A'.charCodeAt();
    let code0 = '0'.charCodeAt();

    return str.split("").reverse().reduce((acc, c, idx) =>
    {
        let code = c.charCodeAt();
        c = code + ((c >= '0' && c <= '9') ? -code0 : -codeA + 10);
        return acc += c * Math.pow(base, idx);
    }, 0);
}

// Lets convert back some arrays generated on the previous exampel

let base2Array = ["101","110","111","1000","1001","1010","1011","1100","1101"];
let base16Array = ["A","B","C","D","E","F","10","11","12","13","14","15"];

let res2 = base2Array.map(x => convertToDec(x, 2));
let res16 = base16Array.map(x => convertToDec(x, 16));

console.log(
    JSON.stringify(res2),
    JSON.stringify(res16)
);

0
ответ дан Shidersz 16 January 2019 в 15:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: