Простое приведение может вызвать проблемы, если long является отрицательным и может привести к OverflowException. Вам нужно будет использовать синтаксис unchecked , чтобы обеспечить его правильное приведение.
ulong myUnsignedValue = unchecked( (ulong)originalLongValue );