我们知道Guid是16字节的数值,Decimal也是16字节的数值,Guid转换为Decimal?
我尝试把Guid的16字节提出,通过这16字节运算的结果为Decimal,但运算时,到256的11次方时还正确,256的12次方时出错,有什么方法可以转换呀?'!!尝试使用的代码。
private decimal GuidToDec(Guid Gid)
{
byte[][0] byts = Gid.ToByteArray;
byte byt;
bool isPlus;
if (byts(15) <= 127) {
isPlus = true;
} else {
isPlus = false;
foreach (int byt in byts) {
byt = 255 - byt;
}
}
decimal Dec;
int i = -1;
foreach (int byt in byts) {
i += 1;
Dec = Dec + GuidToDecSqrt(i) * byt;
}
if (!(isPlus)) {
return -Dec;
} else {
return Dec;
}
} private decimal GuidToDecSqrt(int Sqrt)
{
int i;
decimal Dec = 1;
if (Sqrt > 0) {
for (int i = 0; i <= Sqrt - 1; i++) {
Dec = decimal.Multiply(Dec, 256);
}
return Dec;
} else {
return Dec;
}
}
我尝试把Guid的16字节提出,通过这16字节运算的结果为Decimal,但运算时,到256的11次方时还正确,256的12次方时出错,有什么方法可以转换呀?'!!尝试使用的代码。
private decimal GuidToDec(Guid Gid)
{
byte[][0] byts = Gid.ToByteArray;
byte byt;
bool isPlus;
if (byts(15) <= 127) {
isPlus = true;
} else {
isPlus = false;
foreach (int byt in byts) {
byt = 255 - byt;
}
}
decimal Dec;
int i = -1;
foreach (int byt in byts) {
i += 1;
Dec = Dec + GuidToDecSqrt(i) * byt;
}
if (!(isPlus)) {
return -Dec;
} else {
return Dec;
}
} private decimal GuidToDecSqrt(int Sqrt)
{
int i;
decimal Dec = 1;
if (Sqrt > 0) {
for (int i = 0; i <= Sqrt - 1; i++) {
Dec = decimal.Multiply(Dec, 256);
}
return Dec;
} else {
return Dec;
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货