AlexT2 Ответов: 1

Как я могу превратить функцию C# в node.js один


Я не очень хорошо знаю C# и застрял. Как эта функция C# будет выглядеть в node/javascript?
static byte[] HashToBytes(string hash, bool reversed = false)
        {
            byte[] ret = new byte[hash.Length / 3];
            for (int i = 0; i < ret.Length; i++)
            {
                ret[i] = byte.Parse(hash.Substring((reversed ? ret.Length - i - 1 : i) * 3, 3));
            }
            return ret;
        }


Что я уже пробовал:

Я попробовал сделать это сам, но если хэш будет 155122110083109073090099, то на javascript я получу C0D12583FE7A009B вместо 635A496D536E7A9B, например, как я получаю на C#
function HashToBytes(hash) {
    var byte = await Buffer.alloc(hash.length / 3)
    for(var i = 0; i < byte.length; i++) {
      byte[i] = await Buffer.from(hash.substring((byte.length - i - 1) * 3, 3))
    }
}

1 Ответов

Рейтинг:
0

Richard MacCutchan

Ваш код C# :

ret[i] = byte.Parse(hash.Substring((reversed ? ret.Length - i - 1 : i) * 3, 3));
Значит, если reversed флаг false, то используйте следующий байт в последовательности.

Ваш код Javascript:
byte[i] = await Buffer.from(hash.substring((byte.length - i - 1) * 3, 3))
Это выбор байтов исходных данных в обратном порядке. Просто используйте значение i как смещение, таким образом:
byte[i] = await Buffer.from(hash.substring((i) * 3, 3))