因此,我將一些代碼從VB.NET遷移到C#,但它在C#中執行字節解析時失敗。在VB.NET中工作,但不在C#中 - 字節轉換
這裏是VB.NET代碼將作品:
Dim sModifiedAccountNumber_AsciiHex
Dim iByte As Byte = 0
Dim iIdx As Integer = 0
Dim strByte As String = String.Empty
sModifiedAccountNumber_AsciiHex = "FC13"
For iIdx = 1 To 3 Step 2
iByte = CByte("&H" & Mid$(sModifiedAccountNumber_AsciiHex, iIdx, 2))
If iByte >= 120 And iByte <= 127 Then
iByte = iByte Or &H80
strByte = Hex$(iByte)
Do While Len(strByte) < 2
strByte = "0" & strByte
Loop
Mid$(sModifiedAccountNumber_AsciiHex, iIdx, 2) = strByte
End If
Next
C#版本:
string modAccountNumberAsciiHex = "FC13";
byte iByte;
string strByte = string.Empty;
for (int iIdx = 1; iIdx <= 3; iIdx += 2)
{
iByte = byte.Parse(("&H" + modAccountNumberAsciiHex.Substring((iIdx - 1), 2)));
if (iByte >= 120 && iByte <= 127)
{
iByte = iByte |= 0x80;
strByte = BitConverter.ToString(new byte[] { iByte });
while (strByte.Length < 2)
{
strByte = "0" + strByte;
}
// TODO: convert the line below to C#
// Mid$(sModifiedAccountNumber_AsciiHex, iIdx, 2) = strByte
}
}
所以在C#我總是對後直接做byte.Parse
(線時收到FormatException
聲明)
有關這應該在C#中的任何想法?
另外 - 在TODO註釋C#版本也將:-)
+1 ...你是辦法,我喬恩太快:) – 2012-07-21 15:12:21
謝謝喬恩。你是對的,它是VB6代碼。是的,我知道&H。它工作時,我做了以下事情:iByte = byte.Parse(modAccountNumberAsciiHex.Substring((iIdx - 1),2),System.Globalization.NumberStyles.HexNumber);. – 2012-07-21 15:23:09