Skocz do zawartości

Witaj!

Zaloguj lub Zarejestruj się aby uzyskać pełny dostęp do forum.

Zdjęcie
- - - - -

[JAVA] metoda getBytes() zwraca zera


  • Zaloguj się, aby dodać odpowiedź
1 odpowiedź w tym temacie

#1 macsurf

macsurf
  • 104 postów
  • SkądKołobrzeg

Napisano 28 lipca 2014 - 13:11

byte[] barr = "text".getBytes();

Niestety po drukowaniu z tablicy bajtowej każdego bajta widzę tylko same zera w konsoli.
Kodowanie w konsoli defaultowe: MacRoman.

- - - Połączono posty - - -

To chyba problem z kodowaniem. Zrobiłem teścik i jeśli zapiszę wszystkie bajty zwrócone przez String do strumienia wyjściowego np. pliku to nie ma problemu:
dos.write("zapis bajtow do strumienia wyjsciowego".getBytes());

Znaki w pliku są kodowane w UTF-8.
I w pliku mam zapisane wszystkie bajty bez żadnych problemów a w konsoli odczyt wszystkich bajtów powoduje wyświetlanie zer.
Więc na 99% to kwestia kodowania.

- - - Połączono posty - - -

To jednak kopiowanie tablicy robiło ten syf :/
W związku z tym pytanie gdzie jest problem, do fieldtxt kopiowane są same zera :(

byte t[] = "zapis bajtowy".getBytes();
byte fieldtxt[] = new byte[64]; // 64 bajtowe pole na tekst
System.arraycopy(fieldtxt, 0, t, 0, t.length);
for(byte bval: fieldtxt)
     System.out.println(bval);

I co ciekawe jak chce odczytać bajty ze zmiennej "t" to też mam same zera, a przecież zmienna t w żaden sposób nie jest modyfikowana przez System.arraycopy ( zakomentuje kopiowanie to "t" odczytuje ), tak więc zgłupiałem i raczej jest to jakiś głupi błąd, bo wcześniej nie miałem żadnych problemów z kopiowaniem tablic w JAVIE :/

#2 macsurf

macsurf
  • 104 postów
  • SkądKołobrzeg

Napisano 28 lipca 2014 - 17:41

Dobra problem rozwiązany, miałem racje głupi błąd był, w arraycopy na odwrót argumenty ehh. Zupełnie na odwrót niż w C w memcpy() Może jednak w takie upały to sobie odpuszcze kodowanie heh ;) Nigdy nie myślałem, że będę z utęsknieniem czekał na koniec lata :)




Użytkownicy przeglądający ten temat: 1

0 użytkowników, 1 gości, 0 anonimowych