2010-12-20 10 views

Antwort

0

Ich weiß nicht, von einer Verknüpfung Sie können jedoch nur einen packen und fragen, wie lange es ist:

length_of_five_packed_doubles = 5 * [1.0].pack('d').length 

By the way, ein Rubin-Array mit dem pack Verfahren kombiniert scheint funktional äquivalent zu sein Python-Strukturmodul. Ruby ziemlich kopiert Perls pack und legte sie als Methoden auf der Array Klasse.

2

ich keine eingebaute Möglichkeit, dies zu tun gefunden zu haben, aber ich habe Erfolg mit dieser kleinen Funktion hat, als ich weiß, ich bin nur mit numerischen Formaten zu tun:

def calculate_size(format) 
    # Only for numeric formats, String formats will raise a TypeError 
    elements = 0 
    format.each_char do |c| 
     if c =~ /\d/ 
     elements += c.to_i - 1 
     else 
     elements += 1 
     end 
    end 
    ([ 0 ] * elements).pack(format).length 
    end 

Dies ist ein Konstrukt Array der richtigen Anzahl von Nullen, ruft pack() mit Ihrem Format auf und gibt die Länge (in Byte) zurück. Nullen funktionieren in diesem Fall, weil sie in jedes der numerischen Formate (Integer, Double, Float usw.) konvertierbar sind.