Forum: PC-Programmierung [php]Dez in 2 octal float


von Lars R. (lars_r48)


Lesenswert?

Hallo,
Ich versuche von einem 1-wire Temperatur Sensor die Daten auf meinen KNX 
Bus zu senden.

Ich habe bereits ein php Programm gefunden, welches mir die dezimal in 
den gewünschten 2 octal float umwandelt.
das Problem ist jedoch das eibd ein Leerzeichen zwischen den Bytes 
braucht und das tut es nicht.
Könnt ihr mir helfen?
1
#!/usr/bin/php
2
<?php
3
4
5
function Value2Eis5($value)
6
{
7
    $value *= 100;
8
9
  $eis5 = 0;
10
  $exponent = 0;
11
12
  if ($value < 0)
13
  {
14
    $eis5 = 0x08000;
15
    $value = -$value;
16
  }
17
  while ($value > 0x07ff)
18
  {
19
    $value >>= 1;
20
    $exponent++;
21
  }
22
  if ($eis5 != 0)
23
    $value = - $value;
24
25
  $eis5 |= $value & 0x7ff;
26
  $eis5 |= ($exponent << 11) & 0x07800;
27
  $tmp = $eis5 & 0x0ffff;
28
29
  return dechex($tmp);
30
}
31
$value = 13.1;
32
33
echo Value2Eis5($value)."<br>";
34
ech

: Bearbeitet durch User
von hansi (Gast)


Lesenswert?

Hast du schon eine Lösung gefunden. Steh vor dem gleichen Problem.

Gruß
Hansi

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Ja? Vielleicht kannst Du ja dann das Problem so beschreiben, daß man 
auch eine Chance hat, es zu verstehen.

Was "die dezimal in den gewünschten 2 octal float umwandeln" heißen 
soll, ist jedenfalls völlig unklar.

von Marcus W. (Gast)


Lesenswert?

Nachdem es bei PHP eh keine strikte Typisierung gibt, reicht es, das 
Ergebnis der Funktion mit z.b substr() aus ein an der zunehmen und mit 
Leerzeichen wieder zusammenzusetzen.

von Marcus W. (Gast)


Lesenswert?

Marcus W. schrieb:
> Nachdem es bei PHP eh keine strikte Typisierung gibt, reicht es,
> das Ergebnis der Funktion mit z.b substr() aus ein an der zunehmen und
> mit Leerzeichen wieder zusammenzusetzen.

Nochmal ohne Handy Auto Korrektur:
...reicht es das Ergebnis der Funktion z.b. mit substr() 
auseinanderzunehmen und mit Leerzeichen wieder zusammenzusetzen.

von Marcus W. (marcusaw)


Lesenswert?

also etwa so:
1
$temp = Value2Eis5($value);
2
$result = substr($temp, 0, 2)." ".substr($temp, 2);
3
echo $result;

: Bearbeitet durch User
von hansi (Gast)


Lesenswert?

Danke. Geht.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.