public static double?ReadSignedRational(this BitmapMetadata metadata, string query) { var value = metadata.ReadLong(query); return(value.HasValue ? ((value.Value & 0xFFFFFFFFL) / (double)((value.Value & 0x7FFFFFFF00000000L) >> 32)) : (double?)null); }