def to_bin
tag = ""
@hash.each do |k, v|
next unless v
next if v.respond_to?("empty?") and v.empty?
k = TAG_MAPPING_2_2_to_2_3[k] if TAG_MAPPING_2_2_to_2_3.has_key?(k)
next if k.size != 4
[v].flatten.each do |value|
data = encode_tag(k, value.to_s, WRITE_VERSION)
tag << k[0,4]
size = data.size
if RUBY_VERSION >= "1.9.0"
size = data.dup.force_encoding("binary").size
end
tag << [size].pack("N")
tag << "\x00"*2
tag << data
end
end
tag_str = "ID3"
tag_str << [ WRITE_VERSION, 0, "0000" ].pack("CCB4")
tag_str << [to_syncsafe(tag.size)].pack("N")
tag_str << tag
puts "tag in binary format: #{tag_str.inspect}" if $DEBUG
tag_str
end