2010-04-15 63 views
1

我读取的Byte Array是从外部DLL文件调用的函数生成的,然后将其转换(编码)为String。在本地窗口(如下所示)中,msg没有尾部双引号。缺少本地字符串的报价

这是一个错误,故障或标志有问题吗?

代码:

Dim msgC(32) As Byte 
    Dim msg As String, length As Integer = 32 

    HW(msgC, length) 

    msg = System.Text.Encoding.Default.GetString(msgC) 

    Dim x As String = "hi", y As String = " ho" 
    Dim z As String = x & y 

当地人:

msg  "Hello World String 
msgC {Length=33}  Byte() 
x  "hi"   String 
y  " ho"   String 
z  "hi ho"   String 
+0

本地窗口中的Value列是否如此窄以至于它会关闭引号?尝试拓宽它。 – 2010-04-15 18:58:49

+0

没有。我删除了比msg长的值的其他本地人(Me,e和sender)。 – Steven 2010-04-15 19:01:43

+0

尝试'String.Copy(msg)'。 – SLaks 2010-04-15 19:05:54

回答

1

我怀疑,如果字符串包含嵌入的空(\0,ASCII字符代码0)字符会发生这种事。

+0

就是这样!我改变了该DLL还可以发送长度并使用Substring来修剪空字符 – Steven 2010-04-15 19:17:18

+1

或者,您可以使用具有索引和计数参数的GetString()重载:http://msdn.microsoft.com/en-us/ library/05cts4c3%28v = VS.100%29.aspx – 2010-04-15 19:23:31

+0

@Andy:谢谢! – Steven 2010-04-15 19:27:07