Hmm...

I've changed the original source of the data to not use signed ints, so I can't re-verify the original problem at the moment. I have run your tests and they appear to be correct here as well.

The problem with %F still stands, though, I think, as the first line doesn't work but second does:

array_sscanf(sprintf("%-F", 4.3), "%-F");
(4) Result: ({ /* 1 element */
                -6.35011e-23
            })

array_sscanf(reverse(sprintf("%-F", 4.3)), "%-F");
(5) Result: ({ /* 1 element */
                4.3
            })

Which is definitely not correct behavior, right?

Additionally, I did run into a problem using the + modifier in sprintf(): while the resulting string is encoded as signed, it prepends a +, which seems incorrect to me, such that it's not possible to decode without first removing the +:

array_sscanf(sprintf("%-+4c", -65335), "%-+4c");
(16) Result: ({ /* 1 element */
                 -16725717
             })

array_sscanf(sprintf("%-+4c", -65335)[1..], "%-+4c");
(18) Result: ({ /* 1 element */
                 -65335
             })

On Wed, 22 Jun 2011, Marcus Comstedt (ACROSS) (Hail Ilpalazzo!) @ Pike (-) 
developers forum wrote:

1. The + and - modifiers to %c don't seem to work in combination, even though 
it seems reasonable that one might want to decode a signed value in big endian 
order. Separately they work fine.

(ITYM "little endian"...)

Seems working to me:

Pike v7.8 release 350 running Hilfe v3.5 (Incremental Pike Frontend)
array_sscanf("\xff\xf0","%+-2c");
(1) Result: ({ /* 1 element */
               -3841
           })
array_sscanf("\xff\xf0","%-+2c");
(2) Result: ({ /* 1 element */
               -3841
           })


  • pos... H. William Welliver III
    • ... Marcus Comstedt (ACROSS) (Hail Ilpalazzo!) @ Pike (-) developers forum
      • ... Bill Welliver
        • ... Marcus Comstedt (ACROSS) (Hail Ilpalazzo!) @ Pike (-) developers forum
          • ... Bill Welliver
            • ... Mirar @ Pike developers forum
              • ... Bill Welliver
                • ... Mirar @ Pike developers forum
                • ... Marcus Comstedt (ACROSS) (Hail Ilpalazzo!) @ Pike (-) developers forum
                • ... Marcus Comstedt (ACROSS) (Hail Ilpalazzo!) @ Pike (-) developers forum
        • ... Mirar @ Pike developers forum
          • ... Bill Welliver
            • ... Henrik Grubbstr�m (Lysator) @ Pike (-) developers forum

Reply via email to