我理解字节和声明变量的概念以节省处理空间。我知道可以存储在一个字节中的最大值是255.
我似乎无法解决当前的问题,并希望有人能够教育我并帮助我解决这个问题。我没有太多使用字节操作的经验。
我得到了一个更新的项目,并被告知将数据传递到我的项目的服务将开始使用2字节来传输ID而不是之前的1字节,因为它们的参数已经增长。
变量的当前声明是:
Dim bytvariable As Byte = 0
接受2字节值的新声明是什么?
其次,我怎样才能将该2字节值转换为整数?
例如,他们传给我这个值:0x138,它应该是312。
提前谢谢。
答案 0 :(得分:2)
Here's a summary .NET中的“原始”数据类型及其大小。
是的,Int16可能就是你想要的。
通常,您将从流中读取二进制数据,或者从字节数组中获取二进制数据。 要将这些来源转换为Int16,您可以这样做:
在C#中:
byte[] block = new byte[128];
mystream.Read(block, 0, block.Length);
int i = 0;
Int16 value = (Int16)(block[i++] + block[i++] * 256);
在VB.NET中,它将是:
Dim block as New Byte(128)
stream.Read(block, 0, block.Length)
Dim i as Int16 = 0
Dim value As Short = CShort((block(i) + (buffer(i+1) * &H100)))
i = i + 2
(我认为)
答案 1 :(得分:1)
从我的头顶我建议如果你坚持这样做(而不是只传递一个整数),你可以使用一个byte数组,第一个索引保存第一个数字,第二个索引保存第二个恩。 byte [0] = 123,byte [1] = 255;
然后将它们组合成一个字符串ex。 string concatenatedNumber = byte [0] .ToString()+ byte [1] .ToString();然后解析它。 int ID = Int32.Parse(concatenatedNumber);
示例在C#中,但我认为你应该明白这个想法。我绝对宁愿把它作为一个整数传递给它。
答案 2 :(得分:1)
你可以试试这个:
Dim bytvariable As Byte(0 To 1)
bytvariable(0) = ' Get the first byte however they are sending it
bytvariable(1) = ' Get the second byte however they are sending it
Dim value As Int16 = BitConverter.ToInt16(buffer, 0);