Toon posts:

[JAVA] Integerwaarde van een String?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo,

Ik zit met een vraagje, wss is het wel logisch op de lossen, maar van de Javadocs geraak ik maar niet wijzer.. :'(

eventjes de situatie uitleggen. Ik haal een tijdsbepaling van een website op m'n draadloze module die op een machine staat (via GPRS). Nu moet ik deze tijd serieel doorsturen naar een extern apparaat.

De data die binnengehaald wordt ziet er zo uit: 152620070110 (15u26, 20sec ,jaar 07, maand 01 ,dag 10)

maar om dit serieel door te sturen zou ik dit graag doen met 6 integerwaarden. Dus:

integerwaarde 15
integerwaarde 26
integerwaarde 20
integerwaarde 07
integerwaarde 01
integerwaarde 10

deze integers verstuur ik dan serieel door.

Ik maak dus eerste een string 'uur' aan, waar ik ' 1 en 5 ' insteek, daarna een string 'min' waar ik ' 2 en 6 ' insteek .. enzoverder

dus heb ik eigenlijk strings die bv ' char 1 char 5 ' bevatten etc.

maar ik wil daarvan nu gewoon int 15 van maken ? Maar ik snap echt niet hoe ik daarbij moet komen?

het is wss iets heel stoms, of iets die ik verkeer interpreteer ofzo :s

dit is m'n code
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
            // stream openen die data binnenhaalt
            InputStream clk = (InputStream) Connector.openInputStream(url);

            // lusje die alle 12 de getallen binnenhaalt, laatste duid erop de de reeks teneinde is
            for (int i = 0; i <= 12; i++){
                switch (i){
                    case 0: case 1:
                        uur += clk.read();      
                    break; 
                    case 2: case 3:
                        min += clk.read();      
                    break;                
                    case 4: case 5:
                        sec += clk.read();      
                    break;
                    case 6: case 7:
                        jaar += clk.read();     
                    break;
                    case 8: case 9:
                        mnd += clk.read();      
                    break;
                    case 10: case 11:
                        dag += clk.read();      
                    break;
                    case 12:
                        if(clk.read() == -1){
                            int datum_binnengekregen = 1;
                            System.out.println("data binnengekregen OK");
                        }   
                    break;
                }     
           }
            
            int uur_int  = Integer.parseInt(uur);
            int min_int  = Integer.parseInt(sec);
            int sec_int  = Integer.parseInt(sec);
            int jaar_int = Integer.parseInt(jaar);
            int mnd_int  = Integer.parseInt(mnd);
            int dag_int  = Integer.parseInt(dag);
                         
            outStream.write((char)uur_int ); 
            outStream.write((char)min_int ); 
            outStream.write((char)sec_int ); 
            outStream.write((char)jaar_int ); 
            outStream.write((char)mnd_int ); 
            outStream.write((char)dag_int ); 


iemand die me kan helpen, :D

Alvast bedankt!
vriendelijke groeten,
Alexander

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Wat jij zoekt is eenvoudig terug te vinden door te [google=java cast string to integer]. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • hamsteg
  • Registratie: Mei 2003
  • Laatst online: 17:12

hamsteg

Species 5618

Even pseudo code:
code:
1
2
3
4
5
6
array = "152620070110"

teller = 0
zolang array niet is leeggelepeld.
  waarde[ teller / 2 ] = char(array[teller])*10 + char(array[teller+1])  //+32 als je uit de control character reeks wilt blijven.
  teller = teller + 2

[ Voor 13% gewijzigd door hamsteg op 10-01-2007 15:43 ]

... gecensureerd ...


  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 11:05

voodooless

Sound is no voodoo!

Draaien zowel module als server java? Gebruik dan gewoon de Data- Input/Outputstream en schrijf je tijd gewoon als unix time door. Kost je maar 4 bytes i.p.v 12, en is in java weer makkelijk om te zeggen naar ieder gewenst formaat. :)

Andere mogelijkheid: Gebruik de Calender classes waar je met alle velden netjes vult door ze met substring uit je stringetje te plukken.

[ Voor 23% gewijzigd door voodooless op 10-01-2007 15:58 ]

Do diamonds shine on the dark side of the moon :?


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 14:58
Erm, ik stond op het punt je op Integer.parseInt(String) te wijzen, maar ik zie dat je die allang gebruikt. Wat is dan nu nog je probleem? De code die je hebt geplaatst doet precies wat je naar eigen zeggen wil.

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Soultaker schreef op woensdag 10 januari 2007 @ 16:49:
Erm, ik stond op het punt je op Integer.parseInt(String) te wijzen, maar ik zie dat je die allang gebruikt. Wat is dan nu nog je probleem? De code die je hebt geplaatst doet precies wat je naar eigen zeggen wil.
Gaat het niet fout bij het outputten? Hij cast nu de integers naar chars bij het outputten en dat levert natuurlijk niet hetzelfde op als een stringconversie. :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Kwistnix
  • Registratie: Juni 2001
  • Laatst online: 08:22
-NMe- schreef op woensdag 10 januari 2007 @ 16:52:
[...]

Gaat het niet fout bij het outputten? Hij cast nu de integers naar chars bij het outputten en dat levert natuurlijk niet hetzelfde op als een stringconversie. :P
Nu gooit ie volgens mij de ASCII waarde voor die int in de outputstream.

  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 11:05

voodooless

Sound is no voodoo!

Sterker nog, zowel het lezen als het schrijven gaat fout ;) De eerste keer omdat er niet gecast wordt naar een char, de tweede keer omdat er WEL gecast wordt naar een char :+

Do diamonds shine on the dark side of the moon :?


  • zwippie
  • Registratie: Mei 2003
  • Niet online

zwippie

Electrons at work

Daarnaast tel je 2 integers bij elkaar op tijdens het lezen in de eigenlijk overbodige for loop met switch. Je kan het in dit geval beter gewoon onder elkaar schrijven zoals je bij de output ook hebt gedaan.

How much can you compute with the "ultimate laptop" with 1 kg of mass and 1 liter of volume? Answer: not more than 10^51 operations per second on not more than 10^32 bits.


  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 11:05

voodooless

Sound is no voodoo!

zwippie schreef op woensdag 10 januari 2007 @ 17:07:
Daarnaast tel je 2 integers bij elkaar op tijdens het lezen
Nee hoor, het is gewoon een string concatonatie ;)

Do diamonds shine on the dark side of the moon :?


  • zwippie
  • Registratie: Mei 2003
  • Niet online

zwippie

Electrons at work

Hm ja, uur bv is waarschijnlijk een string, al staat dat niet in de code hierboven. ;)

How much can you compute with the "ultimate laptop" with 1 kg of mass and 1 liter of volume? Answer: not more than 10^51 operations per second on not more than 10^32 bits.


  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 11:05

voodooless

Sound is no voodoo!

Jawel hoor, indirect:

Java:
1
Integer.parseInt(uur); 


:+

Maar goed. Ik zou zeggen: ga niet moeilijk doen en stuur gewoon een 4 bytes signed integer op (of al je helemaal lui bent een 8 bytes long).

Do diamonds shine on the dark side of the moon :?

Pagina: 1