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.