Sinds de 2 dagen regel reageer ik hier niet meer
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij
Sinds de 2 dagen regel reageer ik hier niet meer
Dan stel je de vraag verkeerd.
Sowieso klopt je topic niet:
Je "neemt" 47 (zonder daarbij een talstelsel aan te duiden, waardoor base 10 voor de hand liggend is) en vervolgens schrijf je 0x47 wat een hexadecimale notatie is (base 16). 47 != 0x47.CurlyMo schreef op maandag 13 januari 2014 @ 00:38:
Ik neem 47 en voer dan deze conversie uit:
[ Voor 53% gewijzigd door RobIII op 13-01-2014 00:46 ]
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij
In de 0x47 wordt een of andere conversie gedaan waarvan ik niet weet hoe ik diezelfde conversie los laat op een variabele.
Sinds de 2 dagen regel reageer ik hier niet meer
Er wordt dan ook geen conversie gedaan. Jouw notatie is anders maar voor de compiler is er geen verschil tussen deze twee:
1
2
| int a = 0x47; int a = 71; |
[ Voor 27% gewijzigd door NMe op 13-01-2014 00:46 ]
'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.
1
| wiringPiI2CSetup(0x47); |
Maar mijn configuratie staat in json. Dus of "0x47" of 47. Het doel is dus om "0x47" naar hetzelfde resultaat als 0x47 of 47 naar hetzelfde resultaat als 0x47 te krijgen.
Ik weet niet wat de 0x conversie inhoud. In verschillende topics staat dat het hexadecimaal is.Je "neemt" 47 (zonder daarbij een talstelsel aan te duiden, waardoor base 10 voor de hand liggend is) en vervolgens schrijf je 0x47 wat een hexadecimale notatie is (base 16). 47 != 0x47
[ Voor 38% gewijzigd door CurlyMo op 13-01-2014 00:47 ]
Sinds de 2 dagen regel reageer ik hier niet meer
Om een idee te krijgen van de conversie:
http://c4learn.com/c-prog...cimal-to-hexadecimal.html
Eigenlijk is het gewoon decimaal omzetten naar binair maar dan met base van 16 ipv 2. Grofweg:
Binair: 2 ^ x
Decimaal: 10 ^ x
Heximaal: 16 ^ x
Gewoon 71 doorgeven dus...CurlyMo schreef op maandag 13 januari 2014 @ 00:45:
Anders gevraagd. Ik heb deze functie:
code:
1 wiringPiI2CSetup(0x47);
Maar mijn configuratie staat in json. Dus of "0x47" of 47. Het doel is dus om "0x47" naar hetzelfde resultaat als 0x47 of 47 naar hetzelfde resultaat als 0x47 te krijgen.
Het ís geen conversie. Het is een manier van weergeven. Je compiler vertaalt hoe dan ook 0x47 en 71 beiden naar 1000111. RobIII in "[C] Hex conversie" noemt al een relevante FAQ, lees die eens door.CurlyMo schreef op maandag 13 januari 2014 @ 00:45:
Ik weet niet wat de 0x conversie inhoud. In verschillende topics staat dat het hexadecimaal is.
[ Voor 35% gewijzigd door NMe op 13-01-2014 00:49 ]
'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.
Nogmaals: 0x47 != 47.CurlyMo schreef op maandag 13 januari 2014 @ 00:45:
Dus of "0x47" of 47. Het doel is dus om "0x47" naar hetzelfde resultaat als 0x47 of 47 naar hetzelfde resultaat als 0x47 te krijgen.
CurlyMo schreef op maandag 13 januari 2014 @ 00:45:
Het doel is dus om "0x47" naar hetzelfde resultaat als 0x47 of 47 naar hetzelfde resultaat als 0x47 te krijgen.
Wat staat er, letterlijk, in je JSON? Staat er 47? Staat er 0x47? En wat wil je precies hebben? Zorg dat je in je antwoord duidelijk de gebruikte/gewenste talstelsels aangeeft. Nogmaals: Getallen en talstelsels FAQ. Lees die door en vooral "Representatie en opslag".
[ Voor 14% gewijzigd door RobIII op 13-01-2014 00:49 ]
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij
1
2
3
4
5
6
7
8
9
10
| 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- 47 -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- -- |
71 opnemen in de config is niet logisch aangezien het hier om 47 gaat
[ Voor 76% gewijzigd door CurlyMo op 13-01-2014 00:55 ]
Sinds de 2 dagen regel reageer ik hier niet meer
Dat staat dus in die FAQ die al een aantal keer gelinkt is. Of op Wikipedia: Hexadecimal.CurlyMo schreef op maandag 13 januari 2014 @ 00:49:
Zoals al aangegeven weet ik niet wat 0x doet met mijn getal. Dáár gaat mijn vraag over.
Het gaat niet om 47, het gaat om 71... Er had ook 0xff kunnen staan, en dat is dan weer 255 in decimaal.CurlyMo schreef op maandag 13 januari 2014 @ 00:49:
71 opnemen in de config is niet logisch aangezien het hier om 47 gaat
Maar goed, als het je helpt:
| Decimaal | Hexadecimaal |
|---|---|
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
| 4 | 4 |
| 5 | 5 |
| 6 | 6 |
| 7 | 7 |
| 8 | 8 |
| 9 | 9 |
| 10 | a |
| 11 | b |
| 12 | c |
| 13 | d |
| 14 | e |
| 15 | f |
| 16 | 10 |
| 17 | 11 |
| 18 | 12 |
| 19 | 13 |
| 20 | 14 |
| 21 | 15 |
| 22 | 16 |
| 23 | 17 |
| 24 | 18 |
| 25 | 19 |
| 26 | 1a |
| 27 | 1b |
| 28 | 1c |
| 29 | 1d |
| 30 | 1e |
| 31 | 1f |
| 32 | 20 |
| 33 | 21 |
| 34 | 22 |
| 35 | 23 |
| 36 | 24 |
| 37 | 25 |
| 38 | 26 |
| 39 | 27 |
| 40 | 28 |
| 41 | 29 |
| 42 | 2a |
| 43 | 2b |
| 44 | 2c |
| 45 | 2d |
| 46 | 2e |
| 47 | 2f |
| 48 | 30 |
| 49 | 31 |
| 50 | 32 |
| 51 | 33 |
| 52 | 34 |
| 53 | 35 |
| 54 | 36 |
| 55 | 37 |
| 56 | 38 |
| 57 | 39 |
| 58 | 3a |
| 59 | 3b |
| 60 | 3c |
| 61 | 3d |
| 62 | 3e |
| 63 | 3f |
| 64 | 40 |
| 65 | 41 |
| 66 | 42 |
| 67 | 43 |
| 68 | 44 |
| 69 | 45 |
| 70 | 46 |
| 71 | 47 |
Die 0x ervoor is alleen maar om de compiler te laten weten dat het om een hexadecimaal getal gaat...
[ Voor 91% gewijzigd door NMe op 13-01-2014 00:57 ]
'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.
Het staat gewoon letterlijk in de, inmiddels 2 keer eerder aangehaalde Getallen en talstelsels FAQ onder het kopje notatie. Lees die nou even.CurlyMo schreef op maandag 13 januari 2014 @ 00:49:
Zoals al aangegeven weet ik niet wat 0x doet met mijn getal. Dáár gaat mijn vraag over.
Dat tabelletje hier en die zin eronder slaan echt als een tang op een varken
[ Voor 43% gewijzigd door RobIII op 13-01-2014 01:05 ]
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij
Dat heb ik dus gedaan, en dan komt ik op het antwoord uit van:RobIII schreef op maandag 13 januari 2014 @ 00:50:
[...]
Het staat gewoon letterlijk in de, inmiddels 2 keer eerder aangehaalde Getallen en talstelsels FAQ onder het kopje notatie. Lees die nou even.
Maar dat had ik al geprobeerd:CrashOverDrive schreef op maandag 13 januari 2014 @ 00:50:
Niks, geeft aan dat het hex is. Dus 16^1 x 4 + 16^0 x 7 = 71
1
| printf("%d\n", ((16^1)*4)+((16^0)*7)); |
Uitvoer = 180
Het kwartje wil echt niet vallen hoor :
Sinds de 2 dagen regel reageer ik hier niet meer
Je hebt écht niet in die paar minuten die FAQ gelezen (en dan doel ik op begrijpend lezen, niet erdoorheen scrollen). En als je die FAQ had gelezen kon je op z'n minst goed onder woorden brengen wat je dan niet snapt i.p.v. "het kwartje wil niet vallen".
RobIII schreef op maandag 13 januari 2014 @ 00:50:
Daarbij zaai je behoorlijk verwarring door steeds getallen te noemen zonder hun talstelsel erbij te vermelden (zoals 0x47 of 4716 of 47 of 4710)
[ Voor 44% gewijzigd door RobIII op 13-01-2014 00:57 ]
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij
De ^-operator is in C dan ook totaal wat anders dan het machtsverheffen wat je hiervoor nodig hebt. Dat iemand je de rekenregels uitlegt wil niet zeggen dat je ze kan copy/pasten naar je C-code en dan hopen dat het werkt.CurlyMo schreef op maandag 13 januari 2014 @ 00:54:
[...]
Maar dat had ik al geprobeerd:
code:
1printf("%d\n", ((16^1)*4)+((16^0)*7));
Uitvoer = 180
Je zit nu een bitwise XOR te doen, en dan krijg je dus:
16 XOR 1 =
10000
00001 XOR
-------
10001
oftewel 17.
16 XOR 0 =
10000
00000 XOR
------
10000
oftewel 16.
Je som is dus: 17 x 4 + 16 x 7 = 68 + 112 = 180.
[ Voor 20% gewijzigd door NMe op 13-01-2014 01:03 ]
'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.
Daar heb ik al die tijd dus overheen gekeken. Eindelijk
Sinds de 2 dagen regel reageer ik hier niet meer
Als je:CurlyMo schreef op maandag 13 januari 2014 @ 00:59:
![]()
Daar heb ik al die tijd dus overheen gekeken. Eindelijk
1
| printf("%d\n", (pow(16,1)*4)+(pow(16,0)*7)); |
of iets dergelijks gaat gebruiken i.p.v.
1
| printf("%d\n", 71); |
of
1
| printf("%d\n", 0x47); |
dan krijg je ruzie met je collega('s), opvolger(s), whatever en heb je 't totaal niet begrepen. Die eerste is leuk als uitleg maar is to-taal onlogisch in (die) code.
[ Voor 6% gewijzigd door RobIII op 13-01-2014 01:03 ]
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij
De topicstart heeft géén idee wat 'ie allemaal aan het doen is, er zitten meerdere mensen te proberen hem op de goeie weg te helpen, maar de TS weigert continu het te snappen en nu "kijkt hij ergens overheen" en is hij er "eindelijk" uit, terwijl ik vrijwel zeker weet dat 'ie er nog stééds geen snars van snapt en zo op deze manier over 5 minuten weer ergens anders de fout in gaat...?
Boldly going forward, 'cause we can't find reverse
Sinds de 2 dagen regel reageer ik hier niet meer
Gelukkig snap je nu ook prima dat je rij 4, kolom 7 probleemloos met 7110 aan kunt roepen, right?
[ Voor 66% gewijzigd door Osiris op 13-01-2014 01:04 ]
Sinds de 2 dagen regel reageer ik hier niet meer
CrashOverDrive schreef op maandag 13 januari 2014 @ 01:06:
offtopic:
Nee, er staat 4, geen 40.. Waar jij op doeld is het gebruiken van een nibble (4 bits) om 2 hex getallen in 1 byte te kunnen stoppen. Wat je dan 4 en 7 geeft
`doelT` a.u.b.
[ Voor 54% gewijzigd door Osiris op 13-01-2014 01:08 ]
Sinds de 2 dagen regel reageer ik hier niet meer
Er staat hoe dan ook géén 40, 47 of wat dan ook. Er staat een hexadecimaal getal en om verwarring te voorkomen is het internationaal geaccepteerd om er 0x voor te zetten. Je hebt gewoon een ander talstelsel, maar het getal is hetzelfde of er nu 71 of 0x47 staat.CurlyMo schreef op maandag 13 januari 2014 @ 01:05:
Ja ja, maar dan krijg ik weer te horen dat er in het voorbeeld geen 4 staat maar 40.
Wat in feite weer niet anders is dan dat wij mensen 10 schrijven. Voluit is dat één tiental plus nul eenheden.CrashOverDrive schreef op maandag 13 januari 2014 @ 01:06:
Nee, er staat 4, geen 40.. Waar jij op doeld is het gebruiken van een nibble (4 bits) om 2 hex getallen in 1 byte te kunnen stoppen. Wat je dan 4 en 7 geeft
7496 is zeven duizendtallen, vier honderdtallen, negen tientallen en zes eenheden.
Hex is niet anders, het gebruikt alleen machten van 16 in plaats van machten van 10:
0x3f1b is 3 16³-tallen, f 16²-tallen, 1 16-tal en b eenheden.
[ Voor 40% gewijzigd door NMe op 13-01-2014 01:10 ]
'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.
Klopt, maar zoals ik in het voorbeeld aangaf wil ik 47 in de configuratie kunnen opgeven om aan te sluiten bij I2C logica qua nummering.NMe schreef op maandag 13 januari 2014 @ 01:07:
[...]
Er staat hoe dan ook géén 40, 47 of wat dan ook. Er staat een hexadecimaal getal en om verwarring te voorkomen is het internationaal geaccepteerd om er 0x voor te zetten. Je hebt gewoon een ander talstelsel, maar het getal is hetzelfde of er nu 71 of 0x47 staat.
Sinds de 2 dagen regel reageer ik hier niet meer
En dat kun je, voor zover ik tot nog toe heb begrepen, prima met 71 doen in je JSON. Maar schijnbaar wil je dat niet.CurlyMo schreef op maandag 13 januari 2014 @ 01:09:
[...]
Klopt, maar zoals ik in het voorbeeld aangaf wil ik 47 in de configuratie kunnen opgeven om aan te sluiten bij I2C logica qua nummering.
Je wilt dus dat je JSON-data een hexadecimaal getal is, zodat de gebruiker simpelweg 't tabelletje uit kan lezen en in kan voeren zonder zelf na te hoeven denken tussen decimaal <-> hexadecimaal en dat die conversie in het programma gedaan wordt.
[ Voor 30% gewijzigd door Osiris op 13-01-2014 01:12 ]
Sinds de 2 dagen regel reageer ik hier niet meer
Of desnoods als je je hoofd er niet omheen krijgt door "0x47" als string door te geven en dan een strtol-call doen voor de conversie, al is dat een lompe omweg die ik niet aan zou willen raden.Osiris schreef op maandag 13 januari 2014 @ 01:10:
[...]
En dat kun je, voor zover ik tot nog toe heb begrepen, prima met 71 doen in je JSON.
Helemaal niet, en dat heb je in de startpost al aangetoond...CurlyMo schreef op maandag 13 januari 2014 @ 01:11:
Ja, maar een nog simpelere gebruiker dan ik moet dan eerst gaan uitvogelen wat de decimale representatie van de hexadecimale 47 is.
C:
1 printf("%d\n", 0x47); // 71
[ Voor 27% gewijzigd door NMe op 13-01-2014 01:13 ]
'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.
Anders kun je gewoon waarde[0] converten naar int, * 16 doen en waarde[1] daarbij optellen?
Fatsoenlijk C coden kan ik overigens niet
[ Voor 16% gewijzigd door Osiris op 13-01-2014 01:14 ]
Dat probeerde ik dus, maar ik zat maar te klooien met die ^ ipv machten.Osiris schreef op maandag 13 januari 2014 @ 01:13:
Wordt die JSON sowieso niet als string aangeleverd?
Anders kun je gewoon waarde\[0] converten naar int, * 16 doen en waarde\[1] daarbij optellen?
Sinds de 2 dagen regel reageer ik hier niet meer
Waarom? Strtol is net zo makkelijk.Osiris schreef op maandag 13 januari 2014 @ 01:13:
Wordt die JSON sowieso niet als string aangeleverd?
Anders kun je gewoon waarde\[0] converten naar int, * 16 doen en waarde\[1] daarbij optellen?
Nog een poging dan, voordat ik het opgeef: je hoeft niks te converteren. Als het een integer is, dan pass je gewoon 71 via JSON, of je passt "0x47" als string en laat strtol het voor je oplossen. Hoe dan ook hoef je er zelf niks voor te doen, zolang je de twee tallenstelsels maar nooit of te nimmer door elkaar gebruikt, en dat doe je alleen al hier in dit topic keer op keer opnieuw.CurlyMo schreef op maandag 13 januari 2014 @ 01:14:
[...]
Dat probeerde ik dus, maar ik zat maar te klooien met die ^ ipv machten.
[ Voor 49% gewijzigd door NMe op 13-01-2014 01:15 ]
'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.
Als het toch al als string binnenkomt wel.
'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.
Sinds de 2 dagen regel reageer ik hier niet meer
Als je een stringrepresentatie van een hexadecimale notatie hebt is het bij mijn weten je simpelste keuze.Osiris schreef op maandag 13 januari 2014 @ 01:19:
Ziet er wel een beetje uit als overkill, die functie, als ik 't zo lees
Ik hoop dat je je waardes al als string had en je niet integers naar strings aan het casten bent puur om dat te kunnen gebruiken?CurlyMo schreef op maandag 13 januari 2014 @ 01:19:
In ieder geval dank allemaal. Ik ga voor strtol.
Begrijp je het inmiddels wel? Want als je dit niet ten volste begrijpt ga je hier problemen mee krijgen in dit project.
'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.
Ik heb veel gehad aan "Art of Intel Assembly x86". Een boek waarin het begin van het boek binair, hexidecimaal wordt uitgelegt.
I2C kent geen "locaties", alleen adressen.CurlyMo schreef op maandag 13 januari 2014 @ 01:03:
Als je I2C locaties opgeeft dan doe je dat zover ik weet niet met 71 maar met een rij / kolom nummer. Zoals je zag in mijn tabel zit het apparaat op rij 40 en kolom 7. Vandaar die onlogische aanroep.
Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.
Als je iets wilt leren, zul je toch ook iets moeten lezen. Als je dat consequent weigert... Verbaas me juist dát de mods in deze zo rustig blijven. Come on...Squ1zZy schreef op maandag 13 januari 2014 @ 07:39:
Ik snap de admins wel dat er zelf eerst gezocht moet worden en dat niet alles voorgekauwt moet worden, maar vind dat jullie de TS wel te hard aanpakken. Die jongen probeert iets te leren...
Ik heb veel gehad aan "Art of Intel Assembly x86". Een boek waarin het begin van het boek binair, hexidecimaal wordt uitgelegt.
Er is enkele malen gelinkt naar hulp-pagina's. TS zou daar evt zinnen van kunnen kopiëren die hij/zij niet snapt. Nee, het is makkelijker om te zeggen: "het kwartje valt niet".
Op Wikipedia staan toch wel een aantal basis dingen die je met iig dit "probleem" op weg zouden moeten helpen:
Wikipedia: Talstelsel
En dan dus: Wikipedia: Decimaal, Wikipedia: Binair, Wikipedia: Hexadecimaal
Het gaat om de manier van tellen: Met tien vingers, met twee of met zestien. That's all.
En dat kan idd ook via boeken.
En dan nog iets waar uit blijkt dat de basis hier mist:
Nee, met farlene. Een i2c device kent een adres, geen locatie. En al helemaal geen kolom of rij. Dat jouw applicatie een of andere vreemde representatie uitpoept is wat anders. Je device zit daar gewoon op adres 0x47 oftewel 0b1000111 (een 7-bits i2c adres).CurlyMo schreef op maandag 13 januari 2014 @ 01:03:
Als je I2C locaties opgeeft dan doe je dat zover ik weet niet met 71 maar met een rij / kolom nummer. Zoals je zag in mijn tabel zit het apparaat op rij 40 en kolom 7. Vandaar die onlogische aanroep.
En als je tabel dan van 0 tot f gaat, zou er al een lampje moeten gaan branden dat we met een hexadecimaal stelsel te maken hebben.
[ Voor 22% gewijzigd door Miyamoto op 13-01-2014 08:58 ]
Je hebt dus de keus uit:
- het I2C adres weergeven als een int (address:71)
- het I2C adres weergeven als string (adress:"0x47")
Als je het adres als string representeerd, kun je sscanf gebruiken voor de conversie naar integer voor wiringPiI2CSetup()
1
2
3
4
5
6
| int addr;
if ( sscanf( strAddr, "0x%02x", &addr) == 1) {
wiringPiI2CSetup(addr);
}else{
//handle error
} |
Het I2C adres ingeven als (decimale) integer en daarna converteren naar hex is geen goed idee
3. Geen JSON gebruiken, maar een format dat wel hex integers ondersteunt (zoals bv YAML)Gabriel-LG schreef op maandag 13 januari 2014 @ 09:53:
JSON staat alleen toe om integers in decimale notatie te representeren.
Je hebt dus de keus uit:
- het I2C adres weergeven als een int (address:71)
- het I2C adres weergeven als string (adress:"0x47")
Ik zou dit toch doen met een bitwise OROsiris schreef op maandag 13 januari 2014 @ 01:09:
En om die twee hexadecimale getallen te kunnen combineren in één byte, pak je 0x40 en 0x07 en vervolgens doe je die bitwise AND, zodat het *tromgeroffel*, 0x47 wordt. Oftewel, 71 decimaal.. Of 107 octaal. Of of of
01000000
00000111 AND
00000000
01000000
00000111 OR
01000111
Diablo III: <GOT> Pteer#2475 --- POE: Dwergux
Ik ben bang dat je gelijk hebt_Peter2_ schreef op maandag 13 januari 2014 @ 10:56:
[...]
Ik zou dit toch doen met een bitwise OR
01000000
00000111 AND
00000000
01000000
00000111 OR
01000111
[ Voor 6% gewijzigd door Osiris op 13-01-2014 10:58 ]
Laten we een aantal dingen duidelijk maken:Miyamoto schreef op maandag 13 januari 2014 @ 08:54:
Als je iets wilt leren, zul je toch ook iets moeten lezen. Als je dat consequent weigert... Verbaas me juist dát de mods in deze zo rustig blijven. Come on...
Er is enkele malen gelinkt naar hulp-pagina's. TS zou daar evt zinnen van kunnen kopiëren die hij/zij niet snapt. Nee, het is makkelijker om te zeggen: "het kwartje valt niet".
1. Ik weet hoe ik moet rekenen in binair, hexadecimaal, octaal, decimaal enz.
2. Ik ben geen beginneling als het gaat om C: https://github.com/pilight/pilight.
3. Ik ben niet bekend met I2C of met de functie strtol (nog niet nodig gehad).
4. Ik was gisteren avond in een minder heldere bui.
5. Ik wist niet waar 0x voor stond in een programmeertaal, omdat ik het nog nooit nodig heb gehad of tegen ben gekomen.
Waar resulteerde dat in:
1. Ik wist aanvankelijk niet dat 0x47 een hexadecimale conversie was.
2. Toen ik er achter kwam vond ik op internet oplossingen via de 16^1 * 4 + 16^0 * 7
3. Met mijn niet heldere hoofd stond ik er niet bij stil dat ^ een XOR doet ipv een macht verheffen.
4. Vandaar al mijn verwarring.
Hoe had ik antwoord gegeven:
De enige manier om van 0x47 op 71 uit te komen is via een hexadecimale conversie. Dat kan je bijv. doen door 0x47 als string aan strtol aan te bieden of door pow(16, 1) * 4 + pow(16, 0) * 7 .
Waar ik gisteren mee aan het werk was was dit protocol door een gebruiker aangeboden:
http://forum.pilight.org/...e-sensor?pid=2824#pid2824
maar wegens onvolledigheid heb omgezet naar:
https://github.com/piligh...7bd/libs/protocols/lm75.c
Waarom gebruik ik geen andere vorm dan JSON voor mijn configuratie. Omdat dat nu eenmaal ooit zo besloten is
[ Voor 5% gewijzigd door CurlyMo op 13-01-2014 10:59 ]
Sinds de 2 dagen regel reageer ik hier niet meer
Dus je weet hoe je in Hexadecimaal moet rekenen maar even kijken op de pagina van wikipedia over hexadecimaal in programmeertalen leek je niet nodig? Wikipedia: HexadecimaalCurlyMo schreef op maandag 13 januari 2014 @ 10:57:
[...]
Laten we een aantal dingen duidelijk maken:
1. Ik weet hoe ik moet rekenen in binair, hexadecimaal, octaal, decimaal enz.
2. Ik ben geen beginneling als het gaat om C: https://github.com/pilight/pilight.
3. Ik ben niet bekend met I2C of met de functie strtol (nog niet nodig gehad).
4. Ik was gisteren avond in een minder heldere bui.
5. Ik wist niet waar 0x voor stond in een programmeertaal, omdat ik het nog nooit nodig heb gehad of tegen ben gekomen.
[tekst]
Hierin staat een stukje over programmeertalen en waarom het als "0xHEXA" wordt aanegegeven, net zoals in elk boek over C-programmeren (en nagenoeg elke andere programmeertaal).
Kwestie van eerst even zelf zoeken voor je hier de vraag neergooit, en als mensen je al helpen en linken naar zoiets als waar ik nu naar link even lezen wat er nou precies geschreven is.
Nogmaals, het is geen conversie. Het is een noteerwijze om decimaal, hexadecimaal, octaal en alle andere vormen van notatie uit elkaar te houden.Waar resulteerde dat in:
1. Ik wist aanvankelijk niet dat 0x47 een hexadecimale conversie was.
2. Toen ik er achter kwam vond ik op internet oplossingen via de 16^1 * 4 + 16^0 * 7
3. Met mijn niet heldere hoofd stond ik er niet bij stil dat ^ een XOR doet ipv een macht verheffen.
4. Vandaar al mijn verwarring.
[ Voor 25% gewijzigd door Merethil op 13-01-2014 11:02 ]
Merethil schreef op maandag 13 januari 2014 @ 11:01:
Nogmaals, het is geen conversie. Het is een noteerwijze om decimaal, hexadecimaal, octaal en alle andere vormen van notatie uit elkaar te houden.
[ Voor 47% gewijzigd door CurlyMo op 13-01-2014 11:05 ]
Sinds de 2 dagen regel reageer ik hier niet meer
Dan is dit antwoord toch al voldoende?CurlyMo schreef op maandag 13 januari 2014 @ 11:03:
Ja, maar ik gaf al aan dat voordat ik mijn vraag stelde al wist dat het om een hexadecimale conversie ging, maar ik die conversie niet via een variabele input voor elkaar kreeg. Vandaar ook de titel van dit topic.
http://gathering.tweakers.net/forum/view_message/41584035
RobIII heeft het je haarfijn uitgelegd, meerdere malen. Hij geeft aan wat je kan doen om het makkelijk te maken voor anderen: Pak 0x, plak je int erachter en klaar is CurlyMo.
Dat was echter te simpel, dus zijn er grotere oplossing voor in de plaats gekomen. Begrijpelijk, kan je dingen beter afvangen. Maar als je dan blijft praten over dat het te simpel is of geen oplossing voor het probleem is, je het hebt over een conversie in plaats van notatie en je aangeeft dat je er geen hout van snapt lijkt je inzet wel een beetje tekort te komen.
In de aanvankelijke eerste post van RobIII reageerde hij alleen met:Merethil schreef op maandag 13 januari 2014 @ 11:06:
[...]
RobIII heeft het je haarfijn uitgelegd, meerdere malen. Hij geeft aan wat je kan doen om het makkelijk te maken voor anderen: Pak 0x, plak je int erachter en klaar is CurlyMo.
1
| printf("%d", 71); |
Later heeft hij die bijgewerkt naar wat er nu staat. Ik reageerde dus met "dat is te simpel" of dit antwoord. Niet op zijn uitleg die hij later toevoegde.
Ten tweede ging het in zijn antwoord op een statische input, niet of een dynamische. Daarom was zijn tweede uitgebreidere antwoord ook niet voldoende om het probleem op te lossen.
Daarbij hoort dat: domme / slecht gerformuleerde vraag != noob. Daar wordt te snel vanuit gegaan hier op tweakers. Ik heb zojuist precies uitgelegd waarom ik de vraag ging stellen. Met welke voorkennis ik hier kwam en waar ik op vast liep.
[ Voor 14% gewijzigd door CurlyMo op 13-01-2014 11:12 ]
Sinds de 2 dagen regel reageer ik hier niet meer
Want van zijn statische input kon jij geen dynamische maken? Dan schort er volgens mij toch wel wat aan je C-kennis.CurlyMo schreef op maandag 13 januari 2014 @ 11:10:
[...]
In de aanvankelijke eerste post van RobIII reageerde hij alleen met:
code:
1printf("%d", 71);
Later heeft hij die bijgewerkt naar wat er nu staat. Ik reageerde dus met "dat is te simpel" of dit antwoord. Niet op zijn uitleg die hij later toevoegde.
Ten tweede ging het in zijn antwoord op een statische input, niet of een dynamische. Daarom was zijn tweede uitgebreidere antwoord ook niet voldoende om het probleem op te lossen.
Daarbij hoort dat: domme / slecht gerformuleerde vraag != noob. Daar wordt te snel vanuit gegaan hier op tweakers. Ik heb zojuist precies uitgelegd waarom ik de vraag ging stellen. Met welke voorkennis ik hier kwam en waar ik op vast liep.
Op zich geen probleem, maar accepteer 't dan en ga in ieder geval even zoeken in wat iedereen post, er zijn genoeg oplossingen geboden en zoektermen gegeven.
Die had ik ook gevonden in die 16^1 * 4 + 16^0 * 7. Eerder uitgelegd waarom het daar mis ging.Merethil schreef op maandag 13 januari 2014 @ 11:14:
Want van zijn statische input kon jij geen dynamische maken? Dan schort er volgens mij toch wel wat aan je C-kennis.
Op zich geen probleem, maar accepteer 't dan en ga in ieder geval even zoeken in wat iedereen post, er zijn genoeg oplossingen geboden en zoektermen gegeven.
Waarom schort het dan gelijk aan C kennis? Als je dat nooit nodig heb gehad of er nooit tegen aan bent gelopen...
Sinds de 2 dagen regel reageer ik hier niet meer
Als je het op jouw manier wilt doen (mensen voeren een int in en die komt achter 0x te staan) kan dat supersimpel, je plakt de twee aan elkaar en gooit het van str naar int.CurlyMo schreef op maandag 13 januari 2014 @ 11:17:
[...]
Die had ik ook gevonden in die 16^1 * 4 + 16^0 * 7. Eerder uitgelegd waarom het daar mis ging.
Waarom schort het dan gelijk aan C kennis? Als je dat nooit nodig heb gehad of er nooit tegen aan bent gelopen...
StrToI is een functie die vrij vaak voorkomt op de term "String to int c". Eventueel kon je het ook zelf doen door een simpele conversie er omheen te schrijven, maar als het toch al bestaat...
Wat ik bedoel met C-kennis waar het aan schort is dat dit soort dingen, naast in C, basiskennis zijn. Je kan ze makkelijk vinden op 't web, het staat in elk boek en je kan zelf ook even logisch nadenken.
Hopelijk heb je in ieder geval genoeg aan de antwoorden die gegeven zijn. Mocht dat niet zo zijn kan je natuurlijk gewoon even googlen, iets wat het eerste is wat je doet.
Klopt, maar je kunt lang uit de voeten zonder strtol te gebruiken: atoi, atol en atofMerethil schreef op maandag 13 januari 2014 @ 11:27:
[...]
StrToI is een functie die vrij vaak voorkomt op de term "String to int c". Eventueel kon je het ook zelf doen door een simpele conversie er omheen te schrijven, maar als het toch al bestaat...
Wat ik bedoel met C-kennis waar het aan schort is dat dit soort dingen, naast in C, basiskennis zijn. Je kan ze makkelijk vinden op 't web, het staat in elk boek en je kan zelf ook even logisch nadenken.
Hopelijk heb je in ieder geval genoeg aan de antwoorden die gegeven zijn. Mocht dat niet zo zijn kan je natuurlijk gewoon even googlen, iets wat het eerste is wat je doet.
Google had ik natuurlijk al gedaan...
Sinds de 2 dagen regel reageer ik hier niet meer
Rest mijn vraag, waarom kon je aan de hand vanCurlyMo schreef op maandag 13 januari 2014 @ 11:30:
[...]
Klopt, maar je kunt lang uit de voeten zonder strtol te gebruiken: atoi, atol en atof![]()
Google had ik natuurlijk al gedaan...
1
| int a = 0x47 |
dit niet dynamisch maken? Googlen + dit antwoord = antwoord op je vraag.
Het moment van de dag denk ik. Daarom zei ik ook dat het kwartje maar niet wilde vallen aangezien ik nooit zo lang op zoiets vast liep.Merethil schreef op maandag 13 januari 2014 @ 11:33:
[...]
dit niet dynamisch maken? Googlen + dit antwoord = antwoord op je vraag.
En dan komt het moment dat iemand zegt: ^ = XOR en strtol (hint) en ik gelijk denk
Met dat laatste bedoel ik dus de gedachtegang. Ik kan het gewoon als string aanbieden en dan een van de woord naar getal functies uit de C library er op loslaten.
[ Voor 28% gewijzigd door CurlyMo op 13-01-2014 11:54 ]
Sinds de 2 dagen regel reageer ik hier niet meer
'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.
Op dit moment wordt het configuratie bestand niet automatisch gegenereerd, maar maken gebruikers die handmatig. Een automatische conversie tussen 0x47 naar 71 bij het opslaan is er dus niet. De gebruiker moet dan zelf omrekenen tussen 0x47 naar 71 en dat vind ik de gebruikersvriendelijkheid niet ten goede komen.
Sinds de 2 dagen regel reageer ik hier niet meer
Want die tabulaire weergave van I2C-adressen is ook maar "een manier". Waarom leer je de gebruikers überhaupt niet aan decimale getallen te gebruiken?
Sinds de 2 dagen regel reageer ik hier niet meer
Sinds de 2 dagen regel reageer ik hier niet meer
Hexadecimale notatie wordt wel vaak gedaan bij dit soort dingen, het is jammer dat JSON deze notatie niet rechstreeks ondersteunt.Gomez12 schreef op maandag 13 januari 2014 @ 13:55:
Tja, of het zo handig is om een weergave manier te hanteren waar je zelf amper uitkomt??? Maar dat moet je uiteraard zelf weten.
Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.
't Is C. Je leest input met scanf. Hex lees je met %x, en dan is een 0X prefix optioneel.
1
2
3
| int number; scanf("%x", &number); printf("%d", number); |
Input: 47 Output: 71.
Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein
Met alle respect maar 't in google gooien was minder werk geweest dan hier posten: [google=i2c]. En dat is ook precies wat we van tweakers verwachten; (een klein beetje) eigen inzet.
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij