Java getByte()使用int数据类型的替代方法
我想创建一个二维码来传输如下数据:Java getByte()使用int数据类型的替代方法,java,qr-code,zxing,Java,Qr Code,Zxing,我想创建一个二维码来传输如下数据: import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.HashMap; import java.util.Map; import javax.imageio.ImageIO; import com.google.zxing.BarcodeFo
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import javax.imageio.ImageIO;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.BinaryBitmap;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatReader;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.NotFoundException;
import com.google.zxing.Result;
import com.google.zxing.WriterException;
import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.common.HybridBinarizer;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
public class QRCode {
static int a = 0;
public static void main(String[] args) throws WriterException,
IOException,NotFoundException
{
int qrCodeData = a;
String filePath = "C://Users/Tommy/QRCode.png";
String charset = "UTF-8"; // or "ISO-8859-1"
Map<EncodeHintType, ErrorCorrectionLevel> hintMap = new HashMap<EncodeHintType,ErrorCorrectionLevel>();
hintMap.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L);
createQRCode(qrCodeData, filePath, charset, hintMap, 200, 200);
System.out.println("QR Code image created successfully!");
System.out.println("Data read from QR Code: "
+ readQRCode(filePath, charset, hintMap));
}
public static void createQRCode(final int qrCodeData, String filePath,
String charset, Map hintMap,
final int qrCodeheight, final int qrCodewidth)
throws WriterException, IOException
{
BitMatrix matrix = new MultiFormatWriter().encode(
new String(qrCodeData.getBytes(charset), charset),
BarcodeFormat.QR_CODE, qrCodewidth, qrCodeheight);
MatrixToImageWriter.writeToFile(matrix, filePath.substring(filePath.lastIndexOf('.') + 1), new File(filePath));
}
public static String readQRCode(String filePath, String charset, Map hintMap)
throws FileNotFoundException, IOException, NotFoundException
{
BinaryBitmap binaryBitmap = new BinaryBitmap(new HybridBinarizer(
new BufferedImageLuminanceSource(
ImageIO.read(new FileInputStream(filePath)))));
Result qrCodeResult = new MultiFormatReader().decode(binaryBitmap);
return qrCodeResult.getText();
}
}
但是在代码中,我使用的getBytes不起作用,因为我使用的是整数值而不是字符串值,我如何更改它,以便使用int数据类型 那么您想知道如何获取int的字节表示形式吗?你可以通过铸造来做到这一点。另请参见:@Humdinger考虑将int转换为字节,会删除int中可用信息的四分之三,而完整表示int需要4个字节,常规转换无法提供int的字节表示。我认为QR码存储字符串或字节[]s。如果你想编码一个int,你怎么做取决于你自己。或者换句话说,你是说没有getMyComplexObject方法,但这是一个比你使用的更高的层。你实际上根本不需要获取字节数组,你可以直接将整数转换为字符串,这是MultiFormatWriter对输入的期望-matrix=new MultiFormatWriter.encodeInteger.ToString QRCodeData,……其他论点;qrCodeData.getBytes没有任何意义。在代码中,qrCodeData是一个int。