Search code examples
javascriptc#code-conversion

Convert JavaScript to C#


How to convert this JavaScript to C#?

<script>
  function zeroPad(num, places) {
    var zero = places - num.toString().length + 1;
    return Array(+(zero > 0 && zero)).join("0") + num;
  }

    var accum = 0;
    var pin = parseInt(form.mac.value.replace(/:/g, '').slice(-6), 16) % 12000;
    var p = pin;
    while (pin)
      accum = (((accum + (3 * (pin % 10))) | 0) + (((pin / 10) | 0) % 10)) | 0, pin = ((pin / 100) | 0);
    accum = ((10 - accum % 10) % 10);
    form.pin.value = (zeroPad(p, 7) + "" + accum);
  }
</script>

Please explain me this line in details?

parseInt(form.mac.value.replace(/:/g, '').slice(-6), 16) % 12000;

Solution

  • I believe start-to-finish code conversions are a bit out of scope of Stack Overflow. If you posted your non-working C# conversion attempt and asked where it went wrong, I'm sure you'd get a much quicker answer to your first question.

    As for your second question:

    parseInt(form.mac.value.replace(/:/g, '').slice(-6), 16) % 12000;
    

    translates to:

    // Gets some mac address from some object outside the code you posted
    var MACAddrString = form.mac.value;
    // Delete the :'s between MAC address bytes
    MACAddrString = MACAddrString.replace(/:/g, '');
    // Take the last 3 bytes (6 hex digit symbols)
    MACAddrString = MACAddrString.slice(-6);
    // Parse the hex string to a number. Second argument indicates base 16.
    var MACAddrInt = parseInt(MACAddrString, 16);
    // Calculate the pin
    var pin = MACAddrInt % 12000;