• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

zamiana tablicy string na 1 int

Object Storage Arubacloud
+1 głos
184 wizyt
pytanie zadane 18 września 2019 w C i C++ przez martin1724 Użytkownik (690 p.)
Cześć, szukając odpowiedzi w internecie nie znalazłem jej. Czy jest możliwa zamiana tablicy stringów, w której są same cyfry na jedną liczbę typu int albo float? Jeśli tak to w jaki sposób?

2 odpowiedzi

+1 głos
odpowiedź 18 września 2019 przez tkz Nałogowiec (42,000 p.)
1
komentarz 18 września 2019 przez j23 Mędrzec (194,920 p.)

Jeśli std::string, to std::stoi.

–1 głos
odpowiedź 18 września 2019 przez Chess Szeryf (76,710 p.)

Swego czasu napisałem "funkcję" atoi__ do tego typu ćwiczeń (konwersja z typu "char" na "int"). Piszę w cudzysłowie, ponieważ język assembly x86-64 operuje na pamięci prawie, że bezpośrednio, wiec trudno odróżniać tam typy.



	global _main
	extern _printf
	extern _exit

	section .data

fmt_u:	db "%u", 0
fmt_s:	db "%s", 0
str_s:	db "200", 0
str_s2:	db "20525", 0
	
	section .text
_main:
	

	mov ebx, str_s2
	lea eax, [ebx+1]


	
	
	call atoi__


	add eax, 475


	push eax
	push fmt_u
	call _printf
	add esp, 8


	push 0
	call _exit
	add esp, 4
	
	
	ret
	
atoi__:

	

	mov ecx, -1
        xor esi, esi
	


	call len_of_n

	dec edi

h1:



	inc ecx
	
	mov dl, byte [eax+ecx-1]

	mov ebx, edx

	sub ebx, 0x30

	;; (8*10)+3

      	; mov esi, ebx	

 	cmp ecx, 1		
	jge hhh
	
   
hhh2:	

	push eax
	push edi
	
	mov eax, 10

	mul ebx

	mov ebx, eax

	mov esi, ebx

	pop edi
	pop eax




	


				; hhh2:

	cmp ecx, edi


	
	jne h1

	

	xor edx, edx
	mov eax, ebx
	mov ebx, 10
	div ebx


	ret


hhh:

	add ebx, esi

	mov esi, ebx

	jmp hhh2

	ret

len_of_n:


        mov edi, -1



loop_x:
	

	inc edi

	

	cmp byte [eax-1+edi], 0x00
	jne loop_x
	

	ret
	
	section .bss

Kompilacja: nasm -fwin32 atoi1.asm && gcc atoi1.obj -o atoi1.exe && atoi1.exe

Nie testowałem tego kodu za bardzo. Wydaje się być w miarę poprawnym. Powinien działać i spełniać założenia. Ale jak mówię należałoby przetestować i sprawdzić, czy wszystko z programem jest w porządku.

komentarz 18 września 2019 przez martin1724 Użytkownik (690 p.)
nie mam pojęcia co to w ogóle jest
komentarz 18 września 2019 przez j23 Mędrzec (194,920 p.)

@Chess, po co mu kod assemblera, skoro pyta o rozwiązanie w C++?

komentarz 18 września 2019 przez Chess Szeryf (76,710 p.)

Tę funkcję może sobie wyeksportować do C++ i używać w tymże języku, więc wrzuciłem. Zasada mojego atoi__ jest taka.

atoi__("8234") => ((((((8*10)+2)*10)+3)*10)+4)
komentarz 18 września 2019 przez j23 Mędrzec (194,920 p.)
Tylko po co? W bibliotekach standardowych ma kilka funkcji, które zrobią to bez zbędnych komplikacji.

Podobne pytania

0 głosów
0 odpowiedzi 1,084 wizyt
0 głosów
2 odpowiedzi 217 wizyt
0 głosów
1 odpowiedź 620 wizyt
pytanie zadane 25 listopada 2020 w C i C++ przez rinsu Nowicjusz (170 p.)

92,556 zapytań

141,404 odpowiedzi

319,561 komentarzy

61,942 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...