php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #33649 unpack returns strange values
Submitted: 2005-07-11 22:52 UTC Modified: 2005-07-11 22:59 UTC
From: raduc at 2software dot ro Assigned:
Status: Not a bug Package: *Programming Data Structures
PHP Version: 4.3.10 OS: Linux
Private report: No CVE-ID: None
 [2005-07-11 22:52 UTC] raduc at 2software dot ro
Description:
------------
Hi,

I have a really strange behaviour with unpack() function and i didn't found any bug / issue like this one.
The result of unpack() is diff. on a spcific server (my client's new hosting company).
I tested the script on Win and Linux and everything works fine, with the same .dbf file (the file is not corrupted).

Please help.

Many thanks,
Radu

Reproduce code:
---------------
$data = fread ($fp, 32) or die ("Could not read data from file <i>$file</i>");
$header_format = 'H2id/' . 'CYear/' . 'CMonth/' . 'CDay/' . 'L# of Records/' . 'SHeader Size/' . 'SRecord Size';
$header = unpack ($header_format, $data);


Expected result:
----------------
Array ( [id] => 03 [Year] => 105 [Month] => 7 [Day] => 2 [# of Records] => 2713 [Header Size] => 129 [Record Size] => 58 ) 


Actual result:
--------------
Array ( [id] => 03 [Year] => 105 [Month] => 7 [Day] => 2 [# of Records] => 2713 [Header Size] => 33024 [Record Size] => 14848 )

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2005-07-11 22:57 UTC] derick@php.net
Doesn't seem to be a bug, the difference is endianness:

33024 in hex = 0x8100
  129 in hex = 0x0081

14848 in hex = 0x3A00
   58 in hex = 0x003A
 [2005-07-11 22:59 UTC] derick@php.net
See at http://no.php.net/manual/en/function.pack.php:

S	unsigned short (always 16 bit, machine byte order)
n	unsigned short (always 16 bit, big endian byte order)
v	unsigned short (always 16 bit, little endian byte order)

You need either n or v...
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Tue Oct 15 15:01:28 2024 UTC