我已经生成了一个MAC地址块,需要将它们存储在Oracle 11gR2表中。我通过SQL Developer Version 4.0.0.13
创建了一个模式,如下所示:
CREATE TABLE "USER"."MAC_DB"
(
"MAC_ADDRESS" VARCHAR2(20 BYTE) NOT NULL ENABLE,
"STATUS" VARCHAR2(20 BYTE) DEFAULT 'Available' NOT NULL ENABLE,
"PO_NUMBER" VARCHAR2(20 BYTE),
CONSTRAINT "MAC_DB_PK" PRIMARY KEY ("MAC_ADDRESS")
)
插入我生成的数据导致了一系列重复值,我对此非常困惑。
以下是我用来生成mac地址的代码。它不漂亮,可以改进并包含一个bug。
我正在寻找一些指南到错误发生的地方:
public List<string> generateMACAddresses(string prefix)
{
List<string> addresses = new List<string>();
for (int i = 0x00000; i <= 0xFFFFF; i++)
{
addresses.Add(prefix+i.ToString("X").PadRight(5,'0'));
using (var sw = new StreamWriter("macAddresses.txt", append: true))
{
sw.WriteLine(mac);
}
}
return addresses;
}
使用以下方法调用该方法:
generateMACAddresses("AB2B3B4");
我期望生成1,048,576,但在导入生成的txt文件后,我最终只得到646,574。
答案 0 :(得分:3)
我认为您应该使用PadLeft
代替PadRight
。
以例如:
1.PadRight(5, '0'); // 10000
10.PadRight(5, '0'); // 10000 (again)
100.PadRight(5, '0'); // 10000 (and again)
您应该执行PadLeft
以避免重复
1.PadLeft(5, '0'); // 00001
10.PadLeft(5, '0'); // 00010
100.PadLeft(5, '0'); // 00100