title: How the input data of smart contract function is packed in hex string before sending to ethereum network
body: <p>I want to understand this to parse data from the private chain transaction and get the input data that was sent for a particular transaction, I have tried many decoders but at some point, they fail.
  This is the simple smart contract I tried using remix</p>
  
  <pre><code>   contract simple{
  
       uint256 deliveryID;
       string status;
       function stringAndUint(string _status,uint256 _deliveryID){
                 status=_status;
                 deliveryID=_deliveryID;
       }
  
      } 
  </code></pre>
  
  <p>Input data generated:- 0x3c38b7fd0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000067374617475730000000000000000000000000000000000000000000000000000</p>
  
  <p>I can interpret the following from the above. </p>
  
  <ul>
  <li>function signature:0x3c38b7fd</li>
  <li>_status value:737461747573, </li>
  <li>_deliveryID:0c but i dont know why 4 is coming and extra 6 before 737461747573 . </li>
  <li>The input to function "stringAndUint " is: "status",12 
  Can some one help me understand how the input data is generated and packet in a long hex string</li>
  </ul>