Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    25

    [Java] Convertire un decimale in due stringhe da 8 bit ciascuna.

    Ciao a tutti, ho un problema... ho bisogno di creare un metodo che preso un numero decimale a 16 bit mi restituisca dua stringhe da 8 bit ciascuna che siano la rappresentazione del numero in decimale. Ad esempio se devo convertire 1024 passo dal binario che fa 0000010000000000 e successivamente devo arrivare ad avere 4,0 ovvero i due decimali trasformati prendendo i due blocchi da 8 bit ciascuno... Ho fatto questo inizio che mi restituisce il binario ma nn so più cm andare avanti... Aiutatemi...

    public class converti {


    public static void main(String[] args) {

    int i =1024;

    int[] decimale1 = new int[16];

    for(int k=0; k< 16; k++){
    decimale1[15-k]=i%2;
    i=i/2;
    }

    for(int k=0; k<16; k++){
    System.out.print(decimale1[k]);
    }

    for(int k=0; k<16; k++){




    }

    }
    }


    L'ho fatto come classe per poterlo provare ma necessito solo di un metodo... Grazie mille

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    Utilizzando la classe Math e l'algoritmo classico per la conversione da base 2 a base 10.

    codice:
    public class converti {
        public static void main(String[] args) {
            int i =1024;
            int[] decimale1 = new int[16];
            for(int k=0; k< 16; k++){
                decimale1[15-k]=i%2;
                i=i/2;
            }
            for(int k=0; k<16; k++){
                System.out.println(decimale1[k]);
            }
            //Mi definisco due variabili che rappresentano i due numeri e un contatore
            double num = 0;
            double num2 = 0;
            double cont = 0;
            //Ciclo sulla prima meta' e applico l'algoritmo
            for(int k=7; k>=0; k--){
                num = num + (decimale1[k]*Math.pow(2, cont));
                cont++;
            }
            //Azzero il contatore, ciclo sulla seconda meta' e applico l'algoritmo
            cont = 0;
            for(int k=15; k>=8; k--){
                num2 = num2 + (decimale1[k]*Math.pow(2, cont));
                cont++;
            }
            System.out.println("Primo numero: "+num);
            System.out.println("Secondo numero: "+num2);
        }
    }
    I numeri sono di tipo double, perche' il metodo Math.pow che serve per l'elevamento a potenza, vuole dei double in input. Se ti servono int, puoi castare i risultati.

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Troppa grazia Sant'Antonio! Faceva schifo usare i metodi di Integer che fanno già tutto quanto richiesto?

    codice:
    public static String toStrangeString(int num) {
            int[] temp = toStrangeIntArray(num);
            return temp[0]+","+temp[1];
    }
        
    public static int[] toStrangeIntArray(int num) {
            // converto in binario
            String binary = Integer.toBinaryString(num);
            
            //aggiungo i leading-zeroes
            while (binary.length() < 16) {
                binary = "0"+binary;
            }
            //splitto e costruisco l'array
            int[] parsed = {Integer.parseInt(binary.substring(0,8),2), Integer.parseInt(binary.substring(8),2)};
            return parsed;
    }
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    25
    Grazie mille... Ma il metodo String toStrangeString mi trasforma l'array di int in una stringa separata da virgola giusto?? e invece l'altro metodo da un int mi ritorna un array di int??' gentilissimo...

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    sì: sono molto propenso a tenere i numeri per quel che sono il più possibile, per quello avevo scritto il metodo che fa la conversione e split in modo che ritornasse un array... poi ho letto che volevi una stringa e ho aggiungto l'altro metodo
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.