public static UuidStringWithBytes[] GenerateNStrings() { var resultStrings = new List <string>(); for (int stringsToCreate = 32, itemsToFill = 1; stringsToCreate > 0; stringsToCreate = stringsToCreate >> 1, itemsToFill = itemsToFill << 1) { for (var stringIndex = 0; stringIndex < stringsToCreate; stringIndex++) { resultStrings.Add( string.Create( 32, (stringIndex * itemsToFill, itmesToFill: itemsToFill), (result, state) => { (int startPositionToFill, int itemsToFillCount) = state; for (var j = 0; j < 32; j++) { result[j] = '0'; } result[startPositionToFill] = '1'; for (var j = 0; j < itemsToFillCount; j++) { result[startPositionToFill + j] = '1'; } })); } } for (int stringsToCreate = 32, itemsToFill = 1; stringsToCreate > 0; stringsToCreate = stringsToCreate >> 1, itemsToFill = itemsToFill << 1) { for (var stringIndex = 0; stringIndex < stringsToCreate; stringIndex++) { resultStrings.Add( string.Create( 32, (stringIndex * itemsToFill, itmesToFill: itemsToFill), (result, state) => { (int startPositionToFill, int itemsToFillCount) = state; for (var j = 0; j < 32; j++) { result[j] = '1'; } result[startPositionToFill] = '1'; for (var j = 0; j < itemsToFillCount; j++) { result[startPositionToFill + j] = '0'; } })); } } var nStrings = resultStrings.Distinct().ToArray(); var output = new UuidStringWithBytes[nStrings.Length]; for (var i = 0; i < nStrings.Length; i++) { var bytes = ConvertHexStringToByteArray(nStrings[i]); output[i] = new UuidStringWithBytes(nStrings[i], bytes); } return(output); }
public static UuidStringWithBytes[] GenerateNStrings() { var resultStrings = new List <string>(); for (int stringsToCreate = 32, itemsToFill = 1; stringsToCreate > 0; stringsToCreate = stringsToCreate >> 1, itemsToFill = itemsToFill << 1) { for (var stringIndex = 0; stringIndex < stringsToCreate; stringIndex++) { #if NETCOREAPP || NET5_0 || NET6_0 resultStrings.Add( string.Create( 32, (stringIndex * itemsToFill, itmesToFill: itemsToFill), (result, state) => { (int startPositionToFill, int itemsToFillCount) = state; for (var j = 0; j < 32; j++) { result[j] = '0'; } result[startPositionToFill] = '1'; for (var j = 0; j < itemsToFillCount; j++) { result[startPositionToFill + j] = '1'; } })); #endif #if NETFRAMEWORK var result = new char[32]; int startPositionToFill = stringIndex * itemsToFill; int itemsToFillCount = itemsToFill; for (var j = 0; j < 32; j++) { result[j] = '0'; } result[startPositionToFill] = '1'; for (var j = 0; j < itemsToFillCount; j++) { result[startPositionToFill + j] = '1'; } var resultStr = new string(result); resultStrings.Add(resultStr); #endif } } for (int stringsToCreate = 32, itemsToFill = 1; stringsToCreate > 0; stringsToCreate = stringsToCreate >> 1, itemsToFill = itemsToFill << 1) { for (var stringIndex = 0; stringIndex < stringsToCreate; stringIndex++) { #if NETCOREAPP || NET5_0 || NET6_0 resultStrings.Add( string.Create( 32, (stringIndex * itemsToFill, itmesToFill: itemsToFill), (result, state) => { (int startPositionToFill, int itemsToFillCount) = state; for (var j = 0; j < 32; j++) { result[j] = '1'; } result[startPositionToFill] = '1'; for (var j = 0; j < itemsToFillCount; j++) { result[startPositionToFill + j] = '0'; } })); #endif #if NETFRAMEWORK var result = new char[32]; int startPositionToFill = stringIndex * itemsToFill; int itemsToFillCount = itemsToFill; for (var j = 0; j < 32; j++) { result[j] = '1'; } result[startPositionToFill] = '1'; for (var j = 0; j < itemsToFillCount; j++) { result[startPositionToFill + j] = '0'; } var resultStr = new string(result); resultStrings.Add(resultStr); #endif } } string[] nStrings = resultStrings.Distinct().ToArray(); var output = new UuidStringWithBytes[nStrings.Length]; for (var i = 0; i < nStrings.Length; i++) { byte[] bytes = ConvertHexStringToByteArray(nStrings[i]); output[i] = new UuidStringWithBytes(nStrings[i], bytes); } return(output); }