Programming Forums

Programming Forums (http://www.programmingforums.org/forumindex.php)
-   Java (http://www.programmingforums.org/forum17.html)
-   -   representing the extended ASCII set in Strings (http://www.programmingforums.org/showthread.php?t=15389)

hbe02 Mar 11th, 2008 11:13 AM

representing the extended ASCII set in Strings
 
hi everyone,
im working on a chat application project where the user can enter some text, this text goes into my compression algorithm which outputs a set of 8 bits with values from 0-255. I need to be able to take a value like 150 and change that into a string send it via TCP, recieve it on the other end and convert it back to 150.
so this is some code i have wrote to investigate:
:

int value = 150;
            sendBytes[i] = (byte)value; //set char of byte

            System.out.println("BYTE = " + (int)sendBytes[i]);
           
            int rep = (int) sendBytes[0] & 0xFF;
            System.out.println("REP = " + rep);
           
            String test = new String(sendBytes,"UTF-8");

from the code above, i found that the number 150 when put into a byte will become a 2's complement number. so 128 will be -128.
the second statement "int rep = ..." will retrieve the original number..so if i say store value 128 in a byte..it will be stored as -128 but when i retrieve it with :
:

int rep = (int) sendBytes[0] & 0xFF;
System.out.println("REP = " + rep);

i will get the number 128 back which is great!

now i need to be able to send the number -128 or the complement of 150 which is stored in the byte via TCP through a string. how can i do tht?

hbe02 Mar 11th, 2008 11:32 AM

Re: representing the extended ASCII set in Strings
 
okay here is the result of a little experiment.. very wierd results!
:

        byte[] sendBytes = new byte[1];
        String test2 = "";
        for(int value = 0 ; value < 256 ; value++)
        {
            System.out.print(value);
            sendBytes[0] = (byte)value; //set char of byte

            test2 = new String(sendBytes);
           
            byte[] b = test2.getBytes();
            int rep = (int) b[0] & 0xFF;
            System.out.print(","+rep);
            System.out.print("\r\n");
        }


OUTPUT:
:

0,0

1,1

2,2

3,3

4,4

5,5

6,6

7,7

8,8

9,9

10,10

11,11

12,12

13,13

14,14

15,15

16,16

17,17

18,18

19,19

20,20

21,21

22,22

23,23

24,24

25,25

26,26

27,27

28,28

29,29

30,30

31,31

32,32

33,33

34,34

35,35

36,36

37,37

38,38

39,39

40,40

41,41

42,42

43,43

44,44

45,45

46,46

47,47

48,48

49,49

50,50

51,51

52,52

53,53

54,54

55,55

56,56

57,57

58,58

59,59

60,60

61,61

62,62

63,63

64,64

65,65

66,66

67,67

68,68

69,69

70,70

71,71

72,72

73,73

74,74

75,75

76,76

77,77

78,78

79,79

80,80

81,81

82,82

83,83

84,84

85,85

86,86

87,87

88,88

89,89

90,90

91,91

92,92

93,93

94,94

95,95

96,96

97,97

98,98

99,99

100,100

101,101

102,102

103,103

104,104

105,105

106,106

107,107

108,108

109,109

110,110

111,111

112,112

113,113

114,114

115,115

116,116

117,117

118,118

119,119

120,120

121,121

122,122

123,123

124,124

125,125

126,126

127,127

128,128

129,63

130,130

131,131

132,132

133,133

134,134

135,135

136,136

137,137

138,138

139,139

140,140

141,63

142,142

143,63

144,63

145,145

146,146

147,147

148,148

149,149

150,150

151,151

152,152

153,153

154,154

155,155

156,156

157,63

158,158

159,159

160,160

161,161

162,162

163,163

164,164

165,165

166,166

167,167

168,168

169,169

170,170

171,171

172,172

173,173

174,174

175,175

176,176

177,177

178,178

179,179

180,180

181,181

182,182

183,183

184,184

185,185

186,186

187,187

188,188

189,189

190,190

191,191

192,192

193,193

194,194

195,195

196,196

197,197

198,198

199,199

200,200

201,201

202,202

203,203

204,204

205,205

206,206

207,207

208,208

209,209

210,210

211,211

212,212

213,213

214,214

215,215

216,216

217,217

218,218

219,219

220,220

221,221

222,222

223,223

224,224

225,225

226,226

227,227

228,228

229,229

230,230

231,231

232,232

233,233

234,234

235,235

236,236

237,237

238,238

239,239

240,240

241,241

242,242

243,243

244,244

245,245

246,246

247,247

248,248

249,249

250,250

251,251

252,252

253,253

254,254

255,255

AS you can see, this experment basically converts a number to string and back to number, all number are good expect for 129,141,143,144,157 which all convert back to the number 63 which is a "?"

hbe02 Mar 11th, 2008 11:35 AM

Re: representing the extended ASCII set in Strings
 
the above experiment was in windows xp. i tried it in linux fedora core 8, the result was all the number from 128 to 255 mapped to 238!


All times are GMT -5. The time now is 3:46 AM.

Powered by vBulletin® Version 3.7.0, Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Copyright ©2007 DaniWeb® LLC