Größe eines Objektes in Byte berechnen

Encera

Aktives Mitglied
Hallo zusammen,
ich hab mal wieder eine Frage und zwar geht es mir um folgendes:
Mir geht es darum die Größe einer eines Objektes in bytes zu berechnen.

Laut Buch müsste eine Transaktion (mein Objekt) eine Größe von 242 bytes haben zuzüglich maximal 72 bytes für die Kryptografische Signatur welche angehängt wird, also insgesamt um die 314 bytes.
Nur leider kann ich überhauptnicht nachvollziehen wie diese Größe zustandekommen soll.
Hier mal die Attribute der Transaktionsklasse:

Java:
private transient byte[] txId;
    private byte[] sender;
    private byte[] receiver;
    private double amount;
    private int nonce;
    private transient long receivedTimeStamp;
    private transient byte[] blockId;
    private double transactionFeeBasePrice;
    private double transactionFeeLimit;
    private transient double transactionFee;
    private transient int sizeInByte;
    private byte[] signature;

Die Adressen des Sender und Empfängers haben je 130 Zeichen und der Blockhash 64.

Die Transaktion selbst wird mittels JSON an die anderen Teilnehmer des Netzwerks verschickt. Ich hab mir testweise die Größe mal anhand vom serialisieren berechnen lassen nur komme ich da auf 514 bzw. 699 für die Adapter-Klasse (Die Adapter Klasse wird verwendet um eine Transaktion intern zu übertragen, da in der „originalen“ Transaction Klasse einige Attribute für die WebApi mittels JSON Ignore ausgeblendet wurden welche aber intern gebraucht werden. Der Adapter kapselt quasi eine Trx samt ihren Attributen. Ist aber e nicht so relevant da die Größe ja bei beiden bei weitem nicht stimmt xD)
TransactionSize


Java:
private byte[] transactionToJSON( Transaction transaction )
    {
        byte[] serializedTransaction = genson.serializeBytes(transaction);
        System.out.println(serializedTransaction);
        System.out.println(serializedTransaction.length);
        
        byte[] serializedTA = genson.serializeBytes(new TransactionAdapter(transaction));
        System.out.println(serializedTA);
        System.out.println(serializedTA.length);
        System.out.println(serializedTA.toString());
        
        return genson.serializeBytes( new TransactionAdapter( transaction ) );
    }

Im Buch selbst wird nur folgendermaßen darauf eingegangen:
Die ursprüngliche Transaktionsgröße aus Abschnitt 4.3 von der die Rede ist war 128.

Villeicht kommt von euch ja wer drauf wie diese 242 bzw. 314 zustande kommen sollen und ob „meine“ Methode zur Berechnung generell falsch ist oder das einfach ein Fehler im Buch ist?

Beste Grüße~
 

mihe7

Top Contributor
Ich kenne mich mit Blockchains nicht aus und auch das Buch ist mir fremd aber ich gehe mal davon aus, dass die Daten binär definiert sind. Eine textuelle Darstellung hat somit eine völlig andere Größe.

Der "Block Hash" könnte z. B. nur 32 Bytes (SHA-256 -> 256 Bit) groß sein. Stellt man die Bytes textuell als Hexadezimalzahlen dar, erhält man 64 Zeichen. Wenn für ein int-Feld 4 Bytes vorgesehen werden, käme die textuelle Darstellung mit weniger als 4 Byte aus, wenn der Wert zwischen 0 und 999 (incl.) liegt und ab 10000 hätte man dagegen schon 5 Bytes.
 

Encera

Aktives Mitglied
Ich kenne mich mit Blockchains nicht aus und auch das Buch ist mir fremd aber ich gehe mal davon aus, dass die Daten binär definiert sind. Eine textuelle Darstellung hat somit eine völlig andere Größe.

Der "Block Hash" könnte z. B. nur 32 Bytes (SHA-256 -> 256 Bit) groß sein. Stellt man die Bytes textuell als Hexadezimalzahlen dar, erhält man 64 Zeichen. Wenn für ein int-Feld 4 Bytes vorgesehen werden, käme die textuelle Darstellung mit weniger als 4 Byte aus, wenn der Wert zwischen 0 und 999 (incl.) liegt und ab 10000 hätte man dagegen schon 5 Bytes.
Wenn ich das ganze so durchrechne komme ich auf 226 bytes, das ist zumindest schonmal um einiges näher dran👍😅
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
L unterschiedliche Größe beim serialisieren eines Objektes! Allgemeine Java-Themen 6
D Größe der Zahlenkombinationen eines Arrays begrenzen Allgemeine Java-Themen 3
L Größe eines Objekts im Arbeitsspeicher Allgemeine Java-Themen 1
data89 Die Größe eines Strings in Byte berechnen? Allgemeine Java-Themen 12
P Größe eines Directories ermitteln mit allen SubDIR`s Allgemeine Java-Themen 28
H Größe eines Bildes ändern und Bild speichern Allgemeine Java-Themen 11
H Größe eines Schriftzeichens ermitteln Allgemeine Java-Themen 2
J Größe einer CD ermitteln Allgemeine Java-Themen 10
D Integer-Array variabler Größe mit Zahlen befüllen (Schleifen) Allgemeine Java-Themen 0
N Kombinationen beliebiger Größe berechnen Allgemeine Java-Themen 1
heyluigi Random Integer Array Ausgabe nach Größe sortieren Allgemeine Java-Themen 6
C Ein Array mit der Größe von 1 KB erstellen Allgemeine Java-Themen 3
M ZipOutputStream gleiche Datei andere Größe? Allgemeine Java-Themen 0
M Array "Größe" anpassen Allgemeine Java-Themen 2
V Files mit Umlauten ergeben keine Größe Allgemeine Java-Themen 9
E ArrayList mit unbekannter Größe Allgemeine Java-Themen 8
F String in feste Größe zerlegen Allgemeine Java-Themen 11
F JFreeChart Größe anpassen Allgemeine Java-Themen 8
Z Position/Größe von Windows-Fenstern ermitteln Allgemeine Java-Themen 12
B JScrollPane und JPanel: Scrollen nur nach Größe des JPanels Allgemeine Java-Themen 2
W Größe des eingebauten Arbeitsspeichers auslesen Allgemeine Java-Themen 13
Developer_X Java3D-Ball größe angeben Allgemeine Java-Themen 12
reibi Größe Array aus bytes Allgemeine Java-Themen 14
G ändernde größe des GrindBagL Allgemeine Java-Themen 2
G itext größe von image Allgemeine Java-Themen 2
S array von unbekannter größe Allgemeine Java-Themen 2
T Größe eine Variablen in Bytes? Allgemeine Java-Themen 22
C Größe von einem File Allgemeine Java-Themen 9
D JFrame vergrößert nicht auf die gewünschte Größe Allgemeine Java-Themen 2
S Bild Größe verändern Allgemeine Java-Themen 2
G String Array Größe begrenzt? Allgemeine Java-Themen 4
B ArrayList mit Größe initialisieren Allgemeine Java-Themen 16
P Maximale Größe einer Klasse Allgemeine Java-Themen 9
G Image in der Größe ändern Allgemeine Java-Themen 2
S Swing - Problem mit Fenster-/Komponenten-Größe Allgemeine Java-Themen 3
R Größe der JRE anpassen Allgemeine Java-Themen 18
G http maximale transfer größe? Allgemeine Java-Themen 3
M Datein einlesen und in feste Größe aufsplitten Allgemeine Java-Themen 2
J Größe von 2D-Arrays Allgemeine Java-Themen 3
E JPEG Datei Größe und Qualität ändern (für Thumbnails) Allgemeine Java-Themen 4
thE_29 Größe bzw. Zeilen einer Datei Allgemeine Java-Themen 4
O regulärer Ausdruck zum durchsuchen eines Strings verwenden Allgemeine Java-Themen 2
T Rotationswinkel eines Bildes bestimmen Allgemeine Java-Themen 4
C Probleme beim Erstellen eines runnable-jar files Allgemeine Java-Themen 1
J JavaScript innerhalb eines Java Projekts ausführen Allgemeine Java-Themen 2
8u3631984 Prüfen ob min. ein Element eines Sets in einem anderen Set enh Allgemeine Java-Themen 4
M Array Rang eines Elements Allgemeine Java-Themen 4
OnDemand Teile eines Links entfernen Allgemeine Java-Themen 6
H Auslesen eines (LDAP-)Attributs in Active Directory Allgemeine Java-Themen 2
W JSON parsen eines ,mit JS.stringify erstellten Strings Allgemeine Java-Themen 27
H Textposition eines gedrehten Textes verschieben Allgemeine Java-Themen 8
berserkerdq2 run-methode eines Threads so programmieren, dass 30x die Sekunde etwas ausgeführt wird. Allgemeine Java-Themen 44
E Ersetzen eines Bildes in der Kopfzeile eines Word-Docx-Dokuments mit Apache POI XWPF Allgemeine Java-Themen 0
N Fahrtrichtung eines selbstfahrenden Auto ändern Allgemeine Java-Themen 3
T Letztes Zeichen eines Strings enfernen Allgemeine Java-Themen 14
S Übergabe eines Sortierkriteriums für ein Artikel Array mittels BiPredicate<Artikel, Artikel> Allgemeine Java-Themen 13
gotzi242 Schatzsuche mithilfe eines O(log n) Algorithmus Allgemeine Java-Themen 2
C Koordinaten LONG/LAT eines neuen Punktes in bestimmter Entfernen und Winkel berechnen Allgemeine Java-Themen 3
Tobero Meine Funktion für das beinhalten eines Punktes in einem Kreis funktioniert nicht Allgemeine Java-Themen 5
LimDul Direktes return eines Array geht nicht Allgemeine Java-Themen 20
S Mittelwert anhand eines Stream berechnen Allgemeine Java-Themen 5
kodela Breite eines erweiterten Monitors feststellen Allgemeine Java-Themen 5
R Zeilen eines 2d Arrays abwechselnd links und rechts mit Nullen auffüllen Allgemeine Java-Themen 14
Zrebna Alternative Darstellung eines Codesnippets Allgemeine Java-Themen 33
kodela Inhalt eines Arrays ändert sich mysteriös Allgemeine Java-Themen 2
bueseb84 Wget mit Wildcards - oder wie lädt man bei JFrog die letzte Version eines Artifacts herunter Allgemeine Java-Themen 3
N Erkennen eines Programs Allgemeine Java-Themen 2
N Pausieren eines Programmes Allgemeine Java-Themen 4
D Input/Output Implementierung eines CommandHandlers/Parsers für viele Eingaben Allgemeine Java-Themen 26
M Gibt es eine API die den aktuellen Wert eines Indikators beim Trading zurückgibt? Allgemeine Java-Themen 7
F Wie bekommt man alle Filenamen eines Webserver Verzeichnisses Allgemeine Java-Themen 6
A Fehler beim Öffnen eines Projekts Allgemeine Java-Themen 6
N Eigenschaften eines Buttons per Setter verändern Allgemeine Java-Themen 5
S Ausfuehrung eines Programms aufzeichnen..? Allgemeine Java-Themen 4
X Ermittlung eines doppelte Paars mit Streams Allgemeine Java-Themen 50
Stonie Prüfen von direkter Implementierung eines Interfaces Allgemeine Java-Themen 7
S Vorbereitung eines Praktikums Allgemeine Java-Themen 4
H Aufruf eines Web Service anhand übergebenen Parameter Allgemeine Java-Themen 2
M Weiterleiten von empfangenen Nachrichten eines StompSessionHandlers Allgemeine Java-Themen 1
J Programm zum Suchen eines Wortes im Dateisystem Allgemeine Java-Themen 4
H Rename eines Projekts Allgemeine Java-Themen 1
J Fenstergröße eines anderen Programmes auslesen Allgemeine Java-Themen 9
ReinerCoder auf Klassen innerhalb eines package zugreifen Allgemeine Java-Themen 22
Meeresgott Erste Schritte Sourcetree - Git | Suchen eines Commits Allgemeine Java-Themen 2
E Status eines USB Mikrofon abfragen Allgemeine Java-Themen 2
DaCrazyJavaExpert OOP Ansätze und Tipps zum Porgrammieren eines Taschenrechners Allgemeine Java-Themen 25
A OOP Problem beim Berechnen der größten Fläche eines Ringes Allgemeine Java-Themen 19
JavaNewbie2.0 Start eines Anderen Programm erkennen Allgemeine Java-Themen 6
I Verbindung eines Java-Plugins mit Webserver Allgemeine Java-Themen 3
L Auswertung eines Testes funktioniert nicht Allgemeine Java-Themen 37
G Iteratoren - Wie kann man mithilfe von Iteratoren nur jeden zweiten Wert eines TreeSets ausgeben? Allgemeine Java-Themen 4
GreenTeaYT Elemente eines 2Dim LinkedList von links nach rechts ausgeben? Allgemeine Java-Themen 0
B Spalten eines 2d-Arrays Allgemeine Java-Themen 2
M Rechenprogramm eines wissenschaftlichen Taschenrechners Allgemeine Java-Themen 4
S Eigenschaften (hier Verknüpfung) eines Files lesen Allgemeine Java-Themen 2
E Typüberprüfung eines chars Allgemeine Java-Themen 5
H Hilfe bei Erstellung eines Hilfe Fenster bei Tastendruck (F1 bei Win98) Allgemeine Java-Themen 5
T Teile eines Double-Wertes verändern Allgemeine Java-Themen 2
R Rückgabe eines Arrays durch Funktion Allgemeine Java-Themen 9
H Datentypen Typ eines Arrays überprüfen Allgemeine Java-Themen 9

Ähnliche Java Themen

Neue Themen


Oben