java zxing 编码 解码_java – 使用ZXing对byte []进行编码和解码

我正在开发一个

Android应用程序,我需要对使用ZXing应用程序生成的QRCode中的字节数组进行编码和解码.我的问题是我的消息解码与生成的字节数组不完全匹配.

我试图基于包含递增索引的字节数组创建QRCode,即

input = [0, 1, 2, ..., 124, 125, 126, 127, -128, -127,... -3, -2, -1, 0, 1, 2, ...]

在对QRCode中的消息进行编码并在响应方侧对其进行解码之后,我获得了以下字节数组输出:

output = [0, 1, 2, ..., 124, 125, 126, 127, 63, 63,... 63, 63, 63, 0, 1, 2, ...]

所有“负”字节值都转为ASCII字符63:’?’问号字符.

我假设编码字符集出了问题,但由于我使用的是ISO-8859-1,每个人都声称是这种问题的解决方案(other topic treating the same kind of issue或here),我不知道我的错误在哪里,或者如果我在编码或解码的实例化期间跳过一步.

这是我执行编码给定字节数组的代码:

String text = "";

byte[] res = new byte[272];

for (int i = 0; i < res.length; i++) {

res[i] = (byte) (i%256);

}

try {

text = new String(res, "ISO8859_1");

} catch (UnsupportedEncodingException e) {

// TODO

}

Intent intent = new Intent(Intents.Encode.ACTION);

Intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);

intent.putExtra(Intents.Encode.TYPE, Contents.Type.TEXT);

intent.putExtra(Intents.Encode.FORMAT, "ISO8859_1");

intent.putExtra(Intents.Encode.DATA, text);

intent.putExtra(Intents.Encode.FORMAT, BarcodeFormat.QR_CODE.toString());

boolean useVCard = intent.getBooleanExtra(USE_VCARD_KEY, false);

QRCodeEncoder qrCodeEncoder = new QRCodeEncoder(activity, intent, dimension, useVCard);

Bitmap bitmap = qrCodeEncoder.encodeAsBitmap();

要解码QRCode,我发送以下Intent

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.qrcodeDecoding);

Intent intent = new Intent(Intents.Scan.ACTION);

intent.putExtra(Intents.Scan.MODE, Intents.Scan.QR_CODE_MODE);

startActivityForResult(intent, 0);

}

并等待结果:

@Override

protected void onActivityResult(int request, int result, Intent data)

{

if(request == 0)

{

//action

if(result == RESULT_OK)

{

String res = data.getStringExtra(Intents.Scan.RESULT);

byte[] dat = null;

try{

dat = res.getBytes("ISO8859_1");

} catch(UnsopportedEncodingException e) {

//TODO

}

}

else if(result == RESULT_CANCELED)

{

//TODO

}

}

}

你能告诉我我的错误在哪里,或者我应该在哪里看?

非常感谢,

弗兰克

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值