1
有沒有人與.net代碼工作來讀取/管理VLQs?有一個Java方法readMultiByteInteger,它接受一個字節流,並根據VLQ規範將它們轉換爲整數,但是我找不到C#等價物。閱讀uintvars(VLQs)到C#整數
維基百科:一個可變長度的量(VLQ)是使用二進制八位組(8位字節)的任意數量的以表示無限大的整數的通用代碼。
任何人有想法? (除了切換到Java?)
感謝, 保羅
有沒有人與.net代碼工作來讀取/管理VLQs?有一個Java方法readMultiByteInteger,它接受一個字節流,並根據VLQ規範將它們轉換爲整數,但是我找不到C#等價物。閱讀uintvars(VLQs)到C#整數
維基百科:一個可變長度的量(VLQ)是使用二進制八位組(8位字節)的任意數量的以表示無限大的整數的通用代碼。
任何人有想法? (除了切換到Java?)
感謝, 保羅
您好我已創建的擴展方法來轉換INT - > uintvar,世界上沒有內置支持這樣做...
public static class BinaryExtension
{
public static IEnumerable<int> ToUIntVar(this int value)
{
string binary = Convert.ToString(value, 2);
for (int i = binary.Length; i > 0; i -= 7)
{
if (i >= 7)
{
if (i == binary.Length)
yield return Convert.ToInt32(binary.Substring(i - 7, 7).PadLeft(8, '0'), 2);
else
yield return Convert.ToInt32("1" + binary.Substring(i - 7, 7), 2);
}
else if (binary.Length < 7)
yield return Convert.ToInt32(binary.Substring(0, i).PadLeft(8, '0'), 2);
else
yield return Convert.ToInt32("1" + binary.Substring(0, i).PadLeft(7, '0'), 2);
}
}
}
我知道代碼看起來醜陋,但它與C#3.0的作品,如果你想使用與C#2.0的代碼我假設你知道程序...
如何使用
var uIntVars = 0x0FFFFFFF.ToUIntVar();
謝謝Prashant。不幸的是,我仍然與.Net 2.0合作,但我可以改進你的代碼。例如我可以使它成爲一種靜態的實用方法而不是擴展。再次感謝。 – 2009-08-05 12:07:21