Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Merita achizitionat DFSK Fengon 5...

Pret actual invelitoare

Probleme baterie Samsung A54

Schema statie auto Renegade REN 1...
 Magazine IT de incredere

Parere SKODA Octavia 3 2.0TDI 150CP

Achizitie telefon 1000-1200lei

Unde gasesc o lampa buna pe gaz?
 Consulta specialiștii... Und...

Fostul director al Frontex: Comis...

Construire anexa lipita de casa

Ce folositi pentru urina mirosito...
 Socializare in prezenta copiilor

Cont Samsung A32

Hotarare definitiva a instantei, ...

Laptop office 2500 lei
 

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,446
  • Î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,446
  • Î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,137
  • Î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 cranio-cerebrală minim invazivă Chirurgia cranio-cerebrală minim invazivă

Tehnicile minim invazive impun utilizarea unei tehnologii ultramoderne.

Endoscoapele operatorii de diverse tipuri, microscopul operator dedicat, neuronavigația, neuroelectrofiziologia, tehnicile avansate de anestezie, chirurgia cu pacientul treaz reprezintă armamentarium fără de care neurochirurgia prin "gaura cheii" nu ar fi posibilă. Folosind tehnicile de mai sus, tratăm un spectru larg de patologii cranio-cerebrale.

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