2016-11-23 137 views
0

我想用一個字符串填充一個sbyte [],並且稍後還會在特定位置的某處設置特定值。如何用字符串(或其他內容)填充C#sbyte數組?

然而,對於一個第一次測試我想補充的一個字符串從頭開始。我嘗試過:

var content = "Kronos Piano".ToCharArray(); 
var memory = new Memory.Memory(ref content); 

其中,Memory的構造函數需要'ref sbyte [] content'參數。

另外的內容只是轉換的字符串的長度。

在C我會使用類似的strcpy。 什麼是最好的C#等價物?

+0

['Convert.ToSByte'](https://msdn.microsoft.com/en-us/library/b0hdkwd9(v = vs.110).aspx)? – Sehnsucht

+0

@Sehnsucht不,*解析*代表-127和+128之間的數字字符串,然後轉換該整數爲'SByte'數據類型,應立即拋出一個異常:「出現FormatException:s不包括可選的標誌後跟一串數字(零到九)「。另一方面,OP顯然希望將「Kronos Piano」表示爲SByte的序列。 – Quantic

+1

我不確定如何解釋*內容只是字符串轉換*部分的長度。所有這一切說,我認爲有信息丟失或不清楚(至少對我而言)。同時也想將C語言翻譯成C#通常是一個糟糕的主意; IMO可以更好地描述尋找習慣解決方案的最終目標 – Sehnsucht

回答

1

使用得到的字符串作爲字節數組。您可以轉換爲SBytes,如下所示。

string str = "Kronos Piano"; 
var bytes = Encoding.ASCII.GetBytes(str); // Gives an array of bytes 

// To convert to SBytes 
var sbytes = bytes.Select(b => Convert.ToSByte(b)).ToArray();