Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Digi24 a disparut de pe TV Lg

Drept de proprietate intelectuala...

Jante noi shitbox

Trinitas TV 4K
 Dacia 1316 cu 6 usi ...

Frecventa modificata radio

Un nou pericol pt batrani

Ar trebuii sa vindem imobiliarele...
 Dupa renuntarea la aparat dentar

pelerinaj in Balcik

Noul format Jpegli iși propu...

Dade, dade
 Probleme accesare nr test telefon

Parola la lock screen

Deparazitare externa pisici fara ...

Seriale turcesti/coreene online H...
 

toBaseOut - schimba basa unui string

* - - - - 1 votes
  • Please log in to reply
7 replies to this topic

#1
MihaiProg

MihaiProg

    Member

  • Grup: Members
  • Posts: 345
  • Înscris: 08.02.2016
toBaseOut - schimba basa unui string
https://github.com/M...er/bignumber.js

// Called by BigNumber and BigNumber.prototype.toString.
	convertBase = (function () {
	  var decimal = '0123456789';
	  /*
	   * Convert string of baseIn to an array of numbers of baseOut.
	   * Eg. toBaseOut('255', 10, 16) returns [15, 15].
	   * Eg. toBaseOut('ff', 16, 10) returns [2, 5, 5].
	   */
	  function toBaseOut(str, baseIn, baseOut, alphabet) {
		var j,
		  arr = [0],
		  arrL,
		  i = 0,
		  len = str.length;
		for (; i < len;) {
		  for (arrL = arr.length; arrL--; arr[arrL] *= baseIn);
		  arr[0] += alphabet.indexOf(str.charAt(i++));
		  for (j = 0; j < arr.length; j++) {
			if (arr[j] > baseOut - 1) {
			  if (arr[j + 1] == null) arr[j + 1] = 0;
			  arr[j + 1] += arr[j] / baseOut | 0;
			  arr[j] %= baseOut;
			}
		  }
		}
		return arr.reverse();
	  }


Codul este Javascript, nu inteleg deloc "arr[0] += alphabet.indexOf(str.charAt(i++));"
asta face concatenare de caractere sau...???

#2
Argv

Argv

    Senior Member

  • Grup: Senior Members
  • Posts: 2,504
  • Înscris: 25.10.2007
Verifica in debugger sau printr-un mesaj inserat dupa linia respectiva.

#3
Ion_de_la_Raion

Ion_de_la_Raion

    Guru Member

  • Grup: Senior Members
  • Posts: 20,434
  • Înscris: 28.08.2005
Cand am vazut in titlu de sus toBaseOut, m-am gaindit ca e o miscare de a-l elimina pe basescu.

#4
MihaiProg

MihaiProg

    Member

  • Grup: Members
  • Posts: 345
  • Înscris: 08.02.2016
@Argv: Ce debugger pentru Javascript?
Am inserat alert(arr);
si am ajuns la concluzia ca "arr[0] += alphabet.indexOf(str.charAt(i++));" nu insereaza nici un element,
initial arr contine doar un element : [0]

if (arr[j + 1] == null) arr[j + 1] = 0;
aici este inserat un element nou [0]
dar cum este "legal" in JavaScipt sa faci asta?

#5
Argv

Argv

    Senior Member

  • Grup: Senior Members
  • Posts: 2,504
  • Înscris: 25.10.2007
Sunt si debuggere pentru Javascript, sunt chiar si online.

Linia arr[0] += alphabet.indexOf(str.charAt(i++));

calculeaza o suma. De exemplu daca rulezi urmatorul cod:

var arr = [0]
arr[0] += 3
arr[0] += 4
alert(arr)

Vei obtine un array cu 1 element: 7

Daca rulezi codul:

var arr = [0]
arr[0] = 3
arr[1] = 4
alert(arr)

Vei obtine un array cu 2 element: 3, 4

aici este inserat un element nou [0]
dar cum este "legal" in JavaScipt sa faci asta?


Array-ul este dinamic, poti adauga elemente.

#6
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,238
  • Înscris: 24.02.2007
Debugger pentru Javascript e orice browser odata intrat in developer tools.

Aria de programare e mai jos, asta-i arie pentru a prezenta programe functionale ce pot fi utile altora.

#7
MihaiProg

MihaiProg

    Member

  • Grup: Members
  • Posts: 345
  • Înscris: 08.02.2016
Functia toBaseOut este 100% functionala, problema era intelegerea ei.

Base16ToBase10 - o pagina html, poate cineva o gaseste utila.

<html>
<head>
<title>Base 16 to base 10</title>
</head>
<body>
<p>Base 16 to base 10 convertor</p>
Hex nr. <input type="text" placeholder="Type something..." id="myInput" size="100"><br>
<button type="button" onclick="Base16ToBase10()">Convert</button><br>
Result <input type="text" id="myOutput" size="100"><br>
<button type="button" onclick="copy()">Copy</button>&emsp;
<button type="button" onclick="reset()">Reset</button><br>

	<script>

// https://www.w3schools.com/howto/howto_js_copy_clipboard.asp
function copy()
{
/* Get the text field */
var copyText = document.getElementById("myOutput");

/* Select the text field */
copyText.select();
copyText.setSelectionRange(0, 99999); /*For mobile devices*/
/* Copy the text inside the text field */
document.execCommand("copy");

}
function reset()
{
document.getElementById("myInput").value = "";
document.getElementById("myOutput").value = "";
}

		function Base16ToBase10()
		{
		// Selecting the input element and get its value
		var inputVal = document.getElementById("myInput").value.toLowerCase();
		var convResult = toBaseOut(inputVal, 16, 10, '0123456789abcdef');
		var joined = convResult.join("");  // join array with no char between
		document.getElementById("myOutput").value = joined;  // set the result value
		}

		  /*  http://github.com/MikeMcl/bignumber.js/blob/master/bignumber.js
		   * Convert string of baseIn to an array of numbers of baseOut.
		   * Eg. toBaseOut('255', 10, 16) returns [15, 15].
		   * Eg. toBaseOut('ff', 16, 10) returns [2, 5, 5].
		   */
		  function toBaseOut(str, baseIn, baseOut, alphabet)
		  {
				  var j,
				  arr = [0],
				  arrL,
				  i = 0,
				  index = 0,
				  len = str.length;
				for (; i < len;) {
				  for (arrL = arr.length; arrL--; arr[arrL] *= baseIn);
				 
				  index = alphabet.indexOf(str.charAt(i++));
				  if (index<0) return [];  // return empty array
				  arr[0] += index;
				  for (j = 0; j < arr.length; j++)
						{
						if (arr[j] > baseOut - 1) {
						  if (arr[j + 1] == null) arr[j + 1] = 0;
						  arr[j + 1] += arr[j] / baseOut | 0;
						  arr[j] %= baseOut;
						}
				  }
				}
				return arr.reverse();
		  }
	</script>
</body>
</html>



#8
MihaiProg

MihaiProg

    Member

  • Grup: Members
  • Posts: 345
  • Înscris: 08.02.2016
Am gasit multe exemple pe internet care convertesc din string (baza 10/baza 16) in numar, nu asta este ce vroiam. Problema cu asta este ca trebuie sa stochezi numarul si nu ai la  dispozitie decat 32 bits: nu prea am ce sa fac cu numarul asta asa de mic, plus ca trebui convertit din nou numarul in string pentru a putea fi afisat.
Salutari.

Anunturi

Chirurgia spinală minim invazivă Chirurgia spinală minim invazivă

Chirurgia spinală minim invazivă oferă pacienților oportunitatea unui tratament eficient, permițându-le o recuperare ultra rapidă și nu în ultimul rând minimizând leziunile induse chirurgical.

Echipa noastră utilizează un spectru larg de tehnici minim invazive, din care enumerăm câteva: endoscopia cu variantele ei (transnazală, transtoracică, transmusculară, etc), microscopul operator, abordurile trans tubulare și nu în ultimul rând infiltrațiile la toate nivelurile coloanei vertebrale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate