Float/Double-Umrechnung als Website

Fragen zum Thema HTML, JavaScript, PHP
Antworten
Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Float/Double-Umrechnung als Website

Beitrag von Xin » Mo Mär 26, 2012 2:41 pm

Hi,

Ich brauche zurzeit häufiger ein Tool, dass Floats und Doubles in ihre Binärdarstellung und diese wiederum in ihre Integerdarstellung umrechnet. Nun überlegte ich mir ein Tool dafür zu schreiben, dachte dann aber daran, dass es ja ganz praktisch wäre, wenn es dafür eine Website bei uns gäbe.
Bisher habe ich nur ein Java-Tool gefunden, dass das für Floats macht.

Das wiederum wäre für manche natürlich eine hübsche Übung.
Hat jemand Interesse, sich daran zu versuchen?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
naums
Beiträge: 740
Registriert: Sa Jan 02, 2010 10:40 pm
Kontaktdaten:

Re: Float/Double-Umrechnung als Website

Beitrag von naums » Mo Mär 26, 2012 7:20 pm

Du willst eine Kommazahl eingeben und dir die binärdarstellung ankucken, sowie diese binärzahl als integer ausgeben lassen? Sollte an und für sich kein Problem darstellen (ich weiß, dass hex geht - und zwar ohne Probleme), PHP bringt sicher die ein oder andere nützliche Fkt. mit.

PS: ich gebe das Projekt an die anderen weiter. ;)
.globl truth
truth:
mov r0, #42
mov pc, lr

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Float/Double-Umrechnung als Website

Beitrag von Xin » Mo Mär 26, 2012 7:40 pm

naums hat geschrieben:Du willst eine Kommazahl eingeben und dir die binärdarstellung ankucken, sowie diese binärzahl als integer ausgeben lassen? Sollte an und für sich kein Problem darstellen (ich weiß, dass hex geht - und zwar ohne Probleme), PHP bringt sicher die ein oder andere nützliche Fkt. mit.
Ich will Doubles eingeben können als Bitmuster (32 bzw. 64 Checkboxen), als Dezimalzahl und als Hexadezimalzahl und dann - entsprechend dem, was ich eingegeben habe, die anderen Felder aktualisiert sehen.

Das ist allgemein keine extrem aufwändige Aufgabe, deswegen packe ich sie einfach mal hier rein, falls sich jemand daran ausprobieren möchte. Ich merke halt nur gerade, dass mir sowas fehlt, weil ich ein Binärformat entschlüsseln muss und es da gut wäre, den Hexdump irgendwo einzugeben und zu sehen, dass das die Darstellung für double( 1.0 ) ist.

Für Floats gibts hier ein Applet:
http://www.h-schmidt.net/FloatApplet/IEEE754de.html

So in etwa stelle ich mir das vor.

Auch ein Dezimal <=> Hex Konverter wäre gut.

Wenn Fragen sind, beantworte ich die gerne. Man kann also auch was lernen. Und wenn keiner Bock hat, dann muss ich halt mal gucken, wann ich dazu Zeit und Lust habe.
naums hat geschrieben:PS: ich gebe das Projekt an die anderen weiter. ;)
War klar. ^^
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

nouseforname
Beiträge: 236
Registriert: Do Feb 10, 2011 6:31 pm

Re: Float/Double-Umrechnung als Website

Beitrag von nouseforname » Do Mär 29, 2012 7:02 pm

Hatte gedacht ich mach das mal so nebenbei, auch für mich.
PHP bietet da eine nette Funktion die unter Umständen schon fast ausreichend ist.

http://de.php.net/manual/de/function.base-convert.php

Aber ich habe auch eine Seite gefunden die das schon kann. Und schick ist es noch dazu.

http://www.binaryconvert.com/convert_double.html

Benutzeravatar
oenone
Beiträge: 223
Registriert: Do Sep 01, 2011 2:42 pm
Wohnort: Bremen
Kontaktdaten:

Re: Float/Double-Umrechnung als Website

Beitrag von oenone » Fr Mär 30, 2012 9:43 am

nouseforname hat geschrieben:Aber ich habe auch eine Seite gefunden die das schon kann. Und schick ist es noch dazu.

http://www.binaryconvert.com/convert_double.html
Ja, nette Seite.. Da erkennt man auch schöne Muster in der Mantisse: http://www.binaryconvert.com/result_dou ... 9069045049

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Float/Double-Umrechnung als Website

Beitrag von Xin » Fr Mär 30, 2012 12:16 pm

Dann weiß ich ja jetzt, woran man sich messen lassen muss :-)
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Float/Double-Umrechnung als Website

Beitrag von Xin » Sa Mär 31, 2012 2:03 pm

Ich habe dann heute mal angefangen, mich mal wieder in JavaScript reinzuversetzen. Nun habe ich Kopfschmerzen...

Momentan geht es nur für Int32, es sieht scheiße aus, aber es ist ja ausbaufähig ;-)

http://www.proggen.org/doku.php?id=convert

Es hat nichtzufällig jemand schon eine Idee, wie man eine in Javascript eine 64 Bit Double mit Bits zusammenschraubt? ^^
reinterpret_cast gibt's in JavaScript wohl nicht ^^
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

nufan
Wiki-Moderator
Beiträge: 2558
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Float/Double-Umrechnung als Website

Beitrag von nufan » Sa Mär 31, 2012 3:41 pm

Für Integer mit Servlets:

converters.IntegerConverter:

Code: Alles auswählen

package converters;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import web.Html;

@WebServlet(name = "IntegerConverter", urlPatterns = {"/IntegerConverter"})
public class IntegerConverter extends HttpServlet {

    String intString;
    String uintString;
    String binString;

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            intString = request.getParameter("int");
            uintString = request.getParameter("uint");
            binString = request.getParameter("bin");
            if (intString != null && !intString.isEmpty()) {
                Integer integer = Integer.parseInt(intString);
                binString = Integer.toBinaryString(integer);
                uintString = String.valueOf(Long.parseLong(binString, 2));
            } else if (uintString != null && !uintString.isEmpty()) {
                if (uintString.startsWith("-")) {
                    uintString.replaceFirst("-", "");
                }
                Long uinteger = Long.parseLong(uintString);
                intString = String.valueOf(uinteger.intValue());
                binString = Long.toBinaryString(uinteger);
            } else if (binString != null && !binString.isEmpty()) {
                Long uinteger = Long.parseLong(binString, 2);
                intString = String.valueOf(uinteger.intValue());
                uintString = uinteger.toString();

            } else {
                intString = "0";
                uintString = "0";
                binString = "0";
            }
            printForm(out);
        } catch (NumberFormatException ex) {
            out.println(Html.getDoctype());
            out.println("<html>");
            out.println("<body>");
            out.println("<h2>Fehler bei der Konvertierung: " + ex.getMessage() + "</h2><br />");
            out.println("<a href=\"" + getServletName() + "\">Zurück</a>");
            out.println("</body>");
            out.println("</html>");
        } finally {
            out.close();
        }
    }

    private void printForm(PrintWriter out) {
        out.println(Html.getDoctype());
        out.println("<html>");
        out.println("<body>");
        out.println("<h2>Konvertierung von Zahlen</h2><br />");
        out.println("<form>");
        out.println("int: <input type=\"text\" onchange=\"submit();\" name=\"int\" value=\"" + intString + "\" /><br />");
        out.println("</form>");
        out.println("<form>");
        out.println("unsigned int: <input type=\"text\" onchange=\"submit();\" name=\"uint\" value=\"" + uintString + "\" /><br />");
        out.println("</form>");
        out.println("<form>");
        out.println("binary: <input type=\"text\" onchange=\"submit();\" name=\"bin\" value=\"" + binString + "\" /><br />");
        out.println("</form>");
        out.println("</body>");
        out.println("</html>");
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    @Override
    public String getServletInfo() {
        return "Short description";
    }
}
web.Html:

Code: Alles auswählen

package web;

public class Html {
    
    public static String getDoctype() {
        return "<!DOCTYPE HTML PUBLIC \" -//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">";
    }

}
Vielleicht mach ich noch eine JSF-Version ^^

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Float/Double-Umrechnung als Website

Beitrag von Xin » Sa Mär 31, 2012 3:57 pm

Tu Dir keinen Zwang an, ich will's trotzdem in JavaScript, denn damit darf ich wohl in Zukunft wieder häufiger kämpfen. ^^
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Antworten