Ik heb een probleem waar ik maar niet uitkom.
De volgende 2 routines ben ik mee bezig geweest:
Het gene wat ik hiermee wil bereiken is een Int32 te converteren naar een string van 4 tekens.
Dit lijkt helemaal goed te gaan:
Hier komt een string van 4 tekens uit: 127 255 255 255
echter als ik dan deze string weer wil omdraaien:
Krijg ik bij de volgende regel een byte array terug bestaande uit 10 values:
Enig idee hoe ik dit kan terug converteren?
Als ik trouwens UniEncode gebruik komt er bij het maken van de string een string uit met een lengte van 2. Wat ik niet helemaal begrijp omdat 2 bytes toch 16 bits zijn
en een Int32 is toch 32bits?
De volgende 2 routines ben ik mee bezig geweest:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| public static string MakeInt(int Value) { byte[] bytes = new byte[4]; bytes[0] = (byte)(Value>> 24); bytes[1] = (byte)(Value>> 16); bytes[2] = (byte)(Value>> 8); bytes[3] = (byte)(Value); return System.Text.Encoding.UTF8.GetString(bytes, 0, 4); } public static int GetInt(string Value) { byte[] bytes = System.Text.Encoding.UTF8.GetBytes(Value); int value = (bytes[0] << 24) + ((bytes[1] & 0xFF) << 16) + ((bytes[2] & 0xFF) << 8) + (bytes[3] & 0xFF); return value; } |
Het gene wat ik hiermee wil bereiken is een Int32 te converteren naar een string van 4 tekens.
Dit lijkt helemaal goed te gaan:
C#:
1
| string test = MakeInt(System.Int32.MaxValue); |
Hier komt een string van 4 tekens uit: 127 255 255 255
echter als ik dan deze string weer wil omdraaien:
C#:
1
| int result = GetInt(test); |
Krijg ik bij de volgende regel een byte array terug bestaande uit 10 values:
C#:
1
| byte[] bytes = System.Text.Encoding.UTF8.GetBytes(Value); |
Enig idee hoe ik dit kan terug converteren?
Als ik trouwens UniEncode gebruik komt er bij het maken van de string een string uit met een lengte van 2. Wat ik niet helemaal begrijp omdat 2 bytes toch 16 bits zijn