gpt4 book ai didi

android - 在android中将int转换为byte[]

转载 作者:行者123 更新时间:2023-11-30 02:35:19 27 4
gpt4 key购买 nike

我正在使用 write() 方法写入外部存储的文件。此方法仅接受 byte[] 作为输入。我尝试传递一个字符串,但收到一条错误消息(“FileOutputStream 类型的方法 write(int) 不适用于参数字符串”)。如果我传递一个 int,我不会得到错误,但在文件中什么也没有写。我通过调用 getNumSentPackets() 获得的值是一个 int,我需要将它转换为 byte[]。我一直在查看此处已经回答的其他问题,并且尝试了 ByteBuffer 选项,但我在文件中得到的结果不是我想要的,这意味着,我没有得到已发送数据包的数量。有谁能帮帮我吗?

这是我的代码:

     public void createFile(String name) {

try {
String filename = name;
File myFile = new File(Environment.getExternalStorageDirectory(), filename);
if (!myFile.exists())
myFile.createNewFile();
String title = "FLOODING RESULTS FILE\n\n";
String sent = "Number of sent packets\n";
FileOutputStream fos;
byte[] data = title.getBytes();
byte[] intSent = sent.getBytes();
int numSent = mSender.getNumSentPackets();
byte[] numSentBytes = ByteBuffer.allocate(10).putInt(numSent).array();
try{
fos = new FileOutputStream(myFile);
fos.write(data);
fos.write(intSent);
fos.write(numSentBytes);
fos.flush();
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
} catch (IOException e) {
e.printStackTrace();
}
}

public static int getNumSentPackets() {
return nSentPackets;
}

预期的输出文件如下:

FLOODING RESULTS FILE

Number of sent packets 200

200 只是一个例子,这意味着我希望看到一个与发送的数据包总数相对应的数字。

提前谢谢你。

最佳答案

因为我是一个懒惰的开发人员,所以我喜欢使用我选择的语言中的现有工具,例如,对于 java,PrintWriter .

public void createFile(String filename) {
try {
File myFile = new File(Environment.getExternalStorageDirectory(), filename);

PrintWriter out = new PrintWriter(myFile); // this will create the file if necessary

out.println("FLOODING RESULTS FILE");
out.println();
out.print("Number of sent packets ");
out.println(mSender.getNumSentPackets());
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}

这比您当前的方法更易于阅读和维护,并且看起来更符合习惯。

关于android - 在android中将int转换为byte[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26671374/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com