我試圖將一個字符串轉換爲一個字節[],然後到一個IBuffer中,以便設置我的HidOutputReport.Data字段。Byte []。AsBuffer()複製結果異常:值不在預期範圍內
當我嘗試使用byte []。AsBuffer()VS2015拋出一個ArgumentException並提供「值不在預期範圍內」作爲有關異常的附加信息。
如果我嘗試使用DataWriter,則在調用DataWriter.DetachBuffer()時會引發同樣的異常。
如果任何人有任何想法,爲什麼這可能會發生或替代方法,我可以嘗試讓我的字符串變成一個IBuffer它將不勝感激。
編輯:代碼添加
HidOutputReport outputReport = device.CreateOutputReport();
byte[] bytesToCopy = new byte[textBox.Text.Length];
bytesToCopy = System.Text.Encoding.ASCII.GetBytes(textBox.Text);
//DataWriter dataWriter = new DataWriter();
//dataWriter.WriteBytes(bytesToCopy);
outputReport.Data = bytesToCopy.AsBuffer();
//outputReport.Data = CryptographicBuffer.CreateFromByteArray(bytesToCopy);
//WindowsRuntimeBufferExtensions.CopyTo(bytesToCopy, 0, outputReport.Data, 0, bytesToCopy.Length);
uint bytesWritten = await proscannerSystem_device.SendOutputReportAsync(outputReport);
你可以看到我的一些其他的方法,我試圖複製。值得注意的是WindowsRuntimeBufferExtensions.CopyTo()
似乎工作,但我錯過了第一個字節(我試圖找出是否它是我的副本的問題,並讓我遇到這個問題,我傾向於相信它)。
是否有可能爲你和你的代碼更新您的問題嗎? –
嘿@RogerHartley我已經添加了一些代碼,但我不相信它會提供很多見解。 –
我想知道是否編碼可能是問題 - 你使用ASCII編碼,但字符串是UT16。我不相信這是答案,因爲AsBuffer()只是圍繞一堆字節包裝一個IBuffer,並不關心這些字節是什麼。但是,這是一些嘗試 - 嘗試使用Encoding.Unicode.GetBytes(),看看它是否有任何區別。 –