Перевод кода с PHP на C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, необходима помощь с переводом кода с PHP на C#
<?php
  define('CRYPT_KEY', '19800216');
  define('DEBUG_MODE',true);
class Inventory {
    var $type;
    var $size;
    var $maxSize;
    var $no;
    var $crc;
    var $items = array();
}
 
function getSignedValue($value) {
    $unpacked = unpack('L', pack ('l', $value)); 
    return ($unpacked[1]);
}
 
function computeCrc ( $inventory ) {
    $crc = $inventory->type;
    foreach ($inventory->items as $item) {
      $itemAttrCount = count($item);
      for ($i = 0 ; $i < $itemAttrCount ; $i++) {
        if ($i != 0 && $i != 10) {
          $crc += $item[$i];
        }
      }
    }
    return getSignedValue($crc);
}
 
function loadInventory ( $maxSize, $no, $input ) {
    $inventory = new Inventory();
    
    $inventory->rawData = $input;
       
    $data = explode (';', $input);
    $dataCount = count($data);
    
    $inventory->no = $no;
    $inventory->maxSize = $maxSize;
    $inventory->type = $data[0];
    $inventory->size = $data[1];
    $inventory->crc = $data[$dataCount - 1];
    
    for ($i=0; $i < $inventory->maxSize ;$i++) {
      $inventory->items[$i] = null;
    }
    
    for ($i = 2 ; $i < $dataCount - 1 ; $i++ ) {
      $item = explode (',', $data[$i]);
      $inventory->items[$item[0]] = $item;
    }
    
    $computedCrc = computeCrc($inventory);

    if ($inventory->crc != $computedCrc) {
 
      if (DEBUG_MODE) {
        echo '<hr><b><font color=red>Error in CRC Check !!</font></b></br>';
        echo '<br /><li>CRC Diff :<b> <font color="red">'.$inventory->crc.'</font> Vs<font color="red"> '.$computedCrc.'</font> </b>';
        echo '<hr>';
      }
      //return null;
      return $inventory;
    }
    else {
      return $inventory;
    }
}
 
function encrypt($input, $key) {
    $keyLen = strlen($key);
    $inputLen = strlen($input);
    $result = '';
    
    for ($i = 0 ; $i < $inputLen ; $i++ ) {
      $result .= chr(ord($input[$i]) + ord($key[$i % $keyLen]));
    }
    
    return $result;
}
 
function decrypt($input, $key) {
    $keyLen = strlen($key);
    $inputLen = strlen($input);
    $result = '';
    
    for ($i = 0 ; $i < $inputLen ; $i++ ) {
      $result .= chr(ord($input[$i]) - ord($key[$i % $keyLen]));
    }
    
    return $result;
  }
 
function loadEncodedInventory($cryptedInv, $key) {
    list($maxSize,$no,$cryptedInv) = split ('[@#]', $cryptedInv, 3);
    $decypheredInv = decrypt($cryptedInv, $key);
    $inventory = loadInventory($maxSize,$no,$decypheredInv);
    return ($inventory);
}  
 
function addItemsToInventory($inventory, $itemList) {
   $itemAssigned = 0;
    for ($i=0; (($i < $inventory->maxSize) && ($itemAssigned < count($itemList))) ; $i++) {
      if ($inventory->items[$i] == null) {
        $inventory->items[$i] = array ($i, $itemList[$itemAssigned][0], $itemList[$itemAssigned][1],$itemList[$itemAssigned][2],$itemList[$itemAssigned][3],$itemList[$itemAssigned][4],$itemList[$itemAssigned][5],$itemList[$itemAssigned][6],$itemList[$itemAssigned][7],$itemList[$itemAssigned][8],$itemList[$itemAssigned][9]);
        $itemAssigned++;
      } 
    }
    
    if ($itemAssigned == count($itemList)) {
    
    } else {
      return false;
    }
 
    $inventory->size += $itemAssigned;
 
    $inventory->crc = computeCrc($inventory);
 
    $inventory->rawData = $inventory->type.';'.$inventory->size.';';
    $itemRawData = array();
    for ($i=0; $i < $inventory->maxSize ; $i++) {
      if ($inventory->items[$i] != null) {
        $itemRawData[] = implode (',',$inventory->items[$i]);
      } 
    }
    $inventory->rawData .= implode(';',$itemRawData);
    $inventory->rawData .= ';'.$inventory->crc;
    return true;
}       
 
function getEncodedInventory($inventory,$key) {
    $output = $inventory->maxSize.
              '@'.$inventory->no.
              '#'.encrypt($inventory->rawData, $key);
              
    return $output;
}
 
function extractItemFromInventory($inventory, $item) {
    $copy = array();
    $extract = array();
    
    $k = 0;
    
    for($i=0; $i < $inventory->maxSize; $i++)
    {
        if($inventory->items[$i][1] !=  $item)
        {
           $copy[$k] = $inventory->items[$i]; 
           $k++;
        }
        else
        {
            $extract[0] = $inventory->items[$i];
        }
    }
    
    $inventory->items = $copy;
    
    if(isset($extract[0])) {
    $inventory->size -= 1;
    $inventory->crc = computeCrc($inventory);
    $inventory->rawData = $inventory->type.';'.$inventory->size.';';
    $itemRawData = array();
    for ($i=0; $i < $inventory->maxSize ; $i++) {
      if ($inventory->items[$i] != null) {
        $itemRawData[] = implode (',',$inventory->items[$i]);
      } 
    }
    $inventory->rawData .= implode(';',$itemRawData);
    $inventory->rawData .= ';'.$inventory->crc;
    return true;
        return $extract;
    }
    else {
        return false;
    }
}
?>
За помощь отблагодарю.

Решение задачи: «Перевод кода с PHP на C#»

textual
Листинг программы
class Inventory {
    var $type;
    var $size; 
    var $maxSize;
    var $no;
    var $crc;
    var $items = array();
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.833 из 5