Android字节数组到字符串到字节数组
我只需要将字节[]转换为字符串。然后对该字符串执行一些操作,并将其转换回byte[]数组。但是在这个测试中,我只是将byte[]转换为string,然后再转换回byte[],结果是不同的 要使用以下命令将字节[]转换为字符串:Android字节数组到字符串到字节数组,android,string,bytearray,Android,String,Bytearray,我只需要将字节[]转换为字符串。然后对该字符串执行一些操作,并将其转换回byte[]数组。但是在这个测试中,我只是将byte[]转换为string,然后再转换回byte[],结果是不同的 要使用以下命令将字节[]转换为字符串: byte[] byteEntity = EntityUtils.toByteArray(entity); String s = new String(byteEntity,"UTF-8"); 然后我试着: byte[] byteTest = s.getBytes("UT
byte[] byteEntity = EntityUtils.toByteArray(entity);
String s = new String(byteEntity,"UTF-8");
然后我试着:
byte[] byteTest = s.getBytes("UTF-8");
然后我抱怨道:
if (byteEntity.equals(byteTest) Log.i("test","equal");
else Log.i("test","diff");
所以结果是不同的
我在stackoverflow中搜索过这件事,但与我的情况不符。关键是我的数据是.png图片,因此转换的字符串无法读取。提前感谢。原语数组实际上是对象(这就是为什么它们有.equals方法),但它们没有实现比较所需的相等契约(hashCode和equals)。您也不能使用==因为根据文档,.getBytes将返回一个新的实例字节[]。您应该使用array.equals(byteEntity,byteTest)来测试相等性。看看答案。
在这种情况下,我的目标是在ByTestStream中转换png图像,以在嵌入式浏览器中显示它(这是一种特殊情况,浏览器没有直接显示png)。
您可以使用该解决方案的逻辑将png转换为字节,然后再转换为字符串。
然后颠倒操作顺序,返回原始文件。 用这样的东西
byte[] mByteEntity = EntityUtils.toByteArray(entity);
byte[] mByteDecrypted = clip_xor(mByteEntity,"your_key".getBytes());
baos.write(mByteDecrypted);
InputStream in = new ByteArrayInputStream(baos.toByteArray());
这是函数clip\uxor
protected byte[] clip_xor(byte[] data, byte[] key) {
int num_key = key.length;
int num_data = data.length;
try {
if (num_key > 0) {
for (int i = 0, j = 0; i < num_data; i++, j = (j + 1)
% num_key) {
data[i] ^= key[j];
}
}
} catch (Exception ex) {
Log.i("error", ex.toString());
}
return data;
}
protectedbyte[]clip\u xor(byte[]数据,byte[]键){
int num_key=key.length;
int num_data=data.length;
试一试{
如果(数字键>0){
对于(int i=0,j=0;i
希望这对面临同样问题的人有用。谢谢大家帮我解决这个问题
特别感谢您使用的p'krit_s数组。equals,它没有做您认为它正在做的事情。您是否尝试过将字符串转换回
并比较这些值?您能否详细说明为什么要这样做?具体来说,你在用这个不可读的字符串做什么?图像最好存储为base64编码字符串(如果您正试图这样做的话)。我的观点是,我在服务器上有加密的图像,并且当我使用response=httppost.execute()
->entity=response.getEntity
->byte[]bytentity=EntityUtils.toByteArray(entity)获取此图像时
然后我必须将这个字节[]转换为字符串,然后使用密钥进行xor解密(实际上我试图进行不转换为字符串的解密,但不幸的是它不起作用)。然后我必须再次将其转换为字节[],使其成为ByteArrayOutputStream,如果您对更好的方法有任何想法,非常感谢。谢谢你的回答。但是我按照你的建议试过了<代码>数组。等于(byteEntity,byteTest)
做出与不等于相同的答案。感谢您的回答。但是这行是什么意思:char[]base64\u 1=MyUtilClass.base64.encode(byt\u 1)
什么是MyUtilClass
,在我的项目中Base64
没有方法Base64.encode
,但有Base64.encodeBytes(byte[]source)
并以字符串形式返回。这是同一个函数吗?我认为Base64.encodeBytes(byte[]source)可能具有与Base64.encode相同的行为。我给你们提供的例子是在J2ME中,我的目的是给你们一个算法。哦,我明白了。非常感谢你。我可以用xor算法解决它。