2017-06-20 1 views
-1
package jetPlanes; 

import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.IOException; 
import java.io.InputStream; 
import java.nio.charset.Charset; 
import java.text.RuleBasedCollator; 

public class BoomBox { 
    public static void main(String args[]){ 
     byte[] bytes = "009343724758".getBytes(); 
     String string = new String(bytes,0,4); 
    Long long1 =new Long(string); 
    System.out.println(long1); 
    } 
} 

Ausgabe zu vermeiden: 93 Statt: anders als 0 0093Ich brauche Erklärung, warum Byte auf diese Weise verhalten und wie es

aber Nummer sind nicht betroffen. Ich weiß Byte speichert rohe Binärdatei, ist das der Grund ?.

Ich brauche diese zwei '00 in meinem langen. Wie bekomme ich sie?

+0

Veränderung der Präzision führende Nullen enthalten. https://stackoverflow.com/questions/4051887/how-to-format-a-java-string-with-leading-zero Wie für die tatsächliche binäre, die Nullen sind da. Sie haben einen Datentyp, der lange genug ist, dass zusätzliche Nullen vorhanden sind. – Peri461

+0

@ Pen461 Denken Sie, dass ich die gleiche Frage stelle wie in dem von Ihnen bereitgestellten Link? Was Sie versuchen zu tun, erklären Sie das in einem Code und das wäre hilfreicher. Danke. –

+0

Ich mache. Und die Beispiele, die als Antwort auf diese Frage gegeben werden, tun genau das, wonach Sie suchen. Siehe Grimys Antwort, die den Unterschied zwischen Wert und Repräsentation erklärt. – Peri461

Antwort

2

Long ist ein numerischer Typ: Er kann nur Zahlen speichern. In diesem Fall speichert es die Zahl 93. 0093 ist keine Zahl, die separat von 93 existiert: numerisch ist es dasselbe. Daher können Sie nicht die führenden Nullen haben. Wenn Sie wirklich die führenden Nullen erhalten wollen, müssen Sie bei String bleiben.

Wenn Sie nicht tatsächlich die führenden Nullen speichern müssen, und müssen sie nur drucken, können Sie dies versuchen:

System.out.format("%04d\n", long1); 
Verwandte Themen