in rocketmq-client-csharp/MessageIdGenerator.cs [70:96]
public String Next()
{
long deltaSeconds = _secondsSinceCustomEpoch + _stopwatch.ElapsedMilliseconds / 1_000;
MemoryStream stream = new MemoryStream();
BinaryWriter writer = new BinaryWriter(stream);
byte[] deltaSecondsBytes = BitConverter.GetBytes(deltaSeconds);
if (BitConverter.IsLittleEndian)
{
Array.Reverse(deltaSecondsBytes);
}
writer.Write(deltaSecondsBytes, 4, 4);
int no = Interlocked.Increment(ref _sequence);
byte[] noBytes = BitConverter.GetBytes(no);
if (BitConverter.IsLittleEndian)
{
Array.Reverse(noBytes);
}
writer.Write(noBytes);
var suffixBytes = stream.ToArray();
return _prefix + Utilities.ByteArrayToHexString(suffixBytes);
}