in rocketmq-client-csharp/SequenceGenerator.cs [110:128]
public string Next()
{
byte[] data = new byte[18];
Array.Copy(version, 0, data, 0, 2);
Array.Copy(macAddress, 0, data, 2, 6);
Array.Copy(pidBytes, 2, data, 8, 2);
int second = SecondsSinceCustomEpoch();
if (second != currentSecond)
{
currentSecond = second;
Interlocked.Exchange(ref sequenceInSecond, 0);
}
byte[] secondBytes = ToArray(second);
Array.Copy(secondBytes, 0, data, 10, 4);
int sequence = Interlocked.Increment(ref sequenceInSecond);
byte[] sequenceBytes = ToArray(sequence);
Array.Copy(sequenceBytes, 0, data, 14, 4);
return BitConverter.ToString(data).Replace("-", ""); ;
}