2017-05-11 74 views
-1

我從發送給我的字符串的C#tcp服務器獲取數據。該字符串以長度爲前綴,一次編碼爲7位整數。node.js使用7位編碼的int長度讀取字符串

如何可以解析在node.js中

+0

這是稍微不鮮明。你能舉個例子嗎?這是什麼長度?字符串是否包含二進制或denary的長度?是長度使用固定的比特數來表示它還是可變的? –

+0

給你得到一個例子價值,並希望能夠從中找出。這將使你想要更容易幫助。現在,這聽起來像是你想要問如何解碼一些編碼的字符串,我們沒有它的編碼規則。 Javascript有二進制運算符和二進制文字(如果你在當前的ish節點上),所以你可以將字符串轉換爲字節,並且如果你真的需要解碼,就做需要做的事情。 –

+0

idk爲什麼我的C#標記被​​刪除,我需要類似https://msdn.microsoft.com/en-us/library/system.io.binaryreader.readstring(v=vs.110).aspx C#寫入字符串:length (7位編碼整數)+字符串,我需要從緩衝區中讀取該字符串。 – avengerweb

回答

0

我的解決辦法長度:

function ReadSharpString(buffer) 
{ 
    let length = 0, shift = 0, offset = 0; 
    let byte; 

    do 
    { 
     byte = buffer[offset++]; 
     length |= (byte & 0x7F) << shift; 
     shift += 7; 
    } 
    while (byte >= 0x80); 

    this.length =() => { 
     return length; 
    }; 

    this.toBuffer =() => { 
     return buffer.slice(offset, offset + length) 
    }; 

    this.toString =() => { 
     return this.toBuffer().toString() 
    }; 
} 

實施例:

令串=新ReadSharpString(新緩衝液([9,87,45,68 ,45,87,45,87,45,87]));

的console.log(string.toBuffer());

的console.log(string.toString());

的console.log(string.length減());