¿Cómo convertir una cadena Java a una matriz de bytes ASCII?¿Cómo convertir una cadena Java a una matriz de bytes ASCII?
Respuesta
String s = "ASCII Text";
byte[] bytes = s.getBytes("US-ASCII");
Sólo hay un carácter incorrecto en el código que ha intentado:
Charset characterSet = Charset.forName("US-ASCII");
String string = "Wazzup";
byte[] bytes = String.getBytes(characterSet);
^
Aviso mayúsculas "Cuerda". Esto intenta invocar un método estático en la clase de cadena, que no existe. En su lugar, debe invocar el método en su instancia de cadena:
byte[] bytes = string.getBytes(characterSet);
si es así, ¿podría decirme cómo podría ser que una letra hebrea se tome 1 byte (codificación ascii), incluso no existe en el ascii. y no está usando encodung predeterminado ya que especifiqué manualmente. http://i.stack.imgur.com/5WPD3.jpg –
@RoyiNamir: Esto podría publicarse mejor como una nueva pregunta, pero la razón es que el carácter no es codificable en US-ASCII y el 'getBytes (Charset)' El método se especifica para reemplazar caracteres que no se pueden codificar. Con US-ASCII, este carácter de reemplazo es el signo de interrogación, por lo que su matriz de bytes contiene un elemento con el valor ASCII de '?' (63) –
Convertir cadena a valores ascii.
String test = "ABCD";
for (int i = 0; i < test.length(); ++i) {
char c = test.charAt(i);
int j = (int) c;
System.out.println(j);
}
El problema con otras soluciones propuestas es que van a caer bien caracteres que no se pueden asignar directamente a ASCII, o reemplazarlos con un personaje como marcador de ?
.
Es posible que desee tener, por ejemplo, caracteres acentuados convertidos a ese mismo carácter sin el acento. Hay un par de trucos para hacer esto (incluida la construcción de una tabla de asignación estática usted mismo o el aprovechamiento de la 'normalización' existente definida para Unicode), pero esos métodos están lejos de estar completos.
Su mejor opción es utilizar la biblioteca junidecode, que no puede completarse, pero incorpora una gran cantidad de experiencia de la manera más sensata para la transcripción de Unicode a ASCII.
Si le sucede a necesitar esto en Android y quiere hacer que funcione con cualquier cosa mayor que Froyo, también se puede utilizar EncodingUtils.getAsciiBytes():
byte[] bytes = EncodingUtils.getAsciiBytes("ASCII Text");
¡Este es un buen consejo! En Android getBytes (...) NO funciona correctamente incluso en ICS + – strange
No encuentro EncodingUtils en ningún lado? – behelit
@behelit si sigues mi enlace redirecciona a este bit: http://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-apache-http-client Básicamente diciendo que necesita incluir manualmente la biblioteca Apache HTTP ya que está en desuso ahora. – dain
Si usted es un usuario guava hay una clase práctica Charsets
: no Charsets.US_ASCII
es de tipo Charset
(:
String s = "Hello, world!";
byte[] b = s.getBytes(Charsets.US_ASCII);
Aparte de no codificación dura de nombre de conjunto de caracteres arbitraria en el código fuente que tiene una ventaja mucho más grande 10) para evitar marcar UnsupportedEncodingException
lanzado solo desde String.getBytes(String)
, pero no desde String.getBytes(Charset)
.
En Java 7 existe la clase equivalente StandardCharsets
.
lamentablemente, 'String.getBytes (Charset)' no se ha agregado hasta la API 9 :(Entonces, si quiere apuntar a Froyo y arriba, no puede hacer eso. – yincrash
Prueba esto:
/**
* @(#)demo1.java
*
*
* @author
* @version 1.00 2012/8/30
*/
import java.util.*;
public class demo1
{
Scanner s=new Scanner(System.in);
String str;
int key;
void getdata()
{
System.out.println ("plase enter a string");
str=s.next();
System.out.println ("plase enter a key");
key=s.nextInt();
}
void display()
{
char a;
int j;
for (int i = 0; i < str.length(); ++i)
{
char c = str.charAt(i);
j = (int) c + key;
a= (char) j;
System.out.print(a);
}
public static void main(String[] args)
{
demo1 obj=new demo1();
obj.getdata();
obj.display();
}
}
}
En mi cadena de caracteres tailandeses tengo TIS620 (codificada) y diéresis alemanas. La respuesta de Agiles me puso en el camino correcto. En lugar de .getBytes() uso ahora
int len = mString.length(); // Length of the string
byte[] dataset = new byte[len];
for (int i = 0; i < len; ++i) {
char c = mString.charAt(i);
dataset[i]= (byte) c;
}
Por la gracia de ALLAH encontré la solución.En realidad, la clase Base64 no está disponible en Android. El enlace se proporciona a continuación para obtener más información.
byte[] byteArray;
byteArray= json.getBytes(StandardCharsets.US_ASCII);
String encoded=Base64.encodeBytes(byteArray);
userLogin(encoded);
aquí está el enlace para la clase Base64. http://androidcodemonkey.blogspot.com/2010/03/how-to-base64-encode-decode-android.html
- 1. ¿Cómo convertir una matriz de bytes a una matriz int?
- 2. ¿Convertir una matriz de bytes a cadena en Silverlight?
- 3. Convertir bytes ASCII [] a String
- 4. Convertir cadena JRuby a matriz de bytes Java, y viceversa
- 5. convertir matriz de cadena a matriz de bytes
- 6. Python: convertir cadena a matriz de bytes
- 7. ¿Cómo va una persona a aprender Java? (convertir matriz de bytes a cadena hexadecimal)
- 8. Ir cadena a Ascii array de bytes
- 9. Convertir una cadena de hexadecimal en ASCII en Java
- 10. Cómo convertir una matriz de bytes a blob
- 11. Cómo convertir una matriz de bytes en una matriz int?
- 12. ¿Cómo convierto una matriz de bytes en una cadena?
- 13. Cómo convertir una matriz de bytes hash C# a una cadena para pasarla a la API?
- 14. Convertir una matriz de bytes a una clase que contiene una matriz de bytes en C#
- 15. Java: ¿Cómo "recortar" una matriz de bytes?
- 16. Convertir cadena de Java en matriz de bytes
- 17. Convertir una matriz de cadenas a matriz de bytes
- 18. Problemas al convertir una matriz de bytes a una cadena y volver a la matriz de bytes
- 19. ¿Cómo trunco una cadena al convertir a bytes en C#?
- 20. Convertir una cadena Unicode en una cadena ASCII de escape
- 21. Cómo convertir eficientemente la matriz de bytes a la cadena
- 22. ¿Cómo convertir una cadena a ascii en binario en C#?
- 23. cómo convertir una matriz de bytes a una cadena y viceversa
- 24. Cómo convertir una matriz de bytes a NSString
- 25. cómo convertir una matriz de bytes a Stream
- 26. ¿Cómo convertir una matriz de bytes int a little endian?
- 27. Cómo convertir una matriz de bytes a Bitmap
- 28. Cómo convertir una cadena C (matriz char) en una cadena Python cuando hay caracteres no ASCII en la cadena?
- 29. Java: Convertir bytes a entero
- 30. ¿Cómo convertir una cadena de valores hexadecimales a una cadena?
Estoy un poco avergonzado por lo fácil que fue eso. –
Esto convertirá caracteres no asignables como '\ u00e0' (& agrave;) en '?'. Sería mejor tener un método que lo convierta en 'a'. –
Para las personas que usan Java 7 o posterior, utilice la clase [StandardCharsets] (http://docs.oracle.com/javase/7/docs/api/java/nio/charset/StandardCharsets.html) que contiene algunas constantes para el estándar Conjuntos 'byte [] b = s.getBytes (StandardCharsets.US_ASCII);' –