数字格式化异常改怎么解决

weng4570 发布于 2013/08/19 12:00
阅读 493
收藏 0
数字格式化异常改怎么解决        (   //将传入的参数,转换为 16 进制数
                    int target = Integer.parseInt(temp, 16);)就是这这一行报的异常;


        private void writeDateTOFile() throws IOException {
                // new一个byte数组用来存一些字节数据,大小为缓冲区大小
                byte[] audiodata = new byte[bufferSizeInBytes];
                FileOutputStream fos = null;
                int readsize = 0;
                
                   File file2 = new File(Audio_new);
                   FileWriter fw=new FileWriter(Audio_new2);
        byte[] buf =new byte[1024];
           int len=0;
           StringBuffer sb=new StringBuffer();


//           try {
//               File file = new File(Audio_new2);
//               if (file.exists()) {
//                   file.delete();
//               }
////               fos = new FileOutputStream(file);// 建立一个可存取字节的文件
//               StringBuffer sb_1=new StringBuffer();
//           } catch (Exception e) {
//               e.printStackTrace();
//           }
                try {
                        File file = new File(AudioName);
                        if (file.exists()) {
                                file.delete();
                        }
                        fos = new FileOutputStream(file);// 建立一个可存取字节的文件
                } catch (Exception e) {
                        e.printStackTrace();
                }
                while (isRecord == true) {
                        readsize = audioRecord.read(audiodata, 0, bufferSizeInBytes);
                        Log.v("TAG", "开始··················");


//                while ((len=fis.read(buf))!=-1){
//                }
//                        writedate();
//                File file = new File(Audio_new);
//                byte[] buf=new byte[1024];
//                int len=0;
//                StringBuffer sb=new StringBuffer();
//                while(true){
//                    len = audioRecord.read(audiodata, 0, bufferSizeInBytes);
                        break;
                }

                        
                        if (AudioRecord.ERROR_INVALID_OPERATION != readsize && fos != null) {

                while(readsize!=-1){
                    Log.v("TAG", "开始22222··················");
//                    sb.append(new String(buf,0,readsize));
                    sb.append(new String(audiodata,0,readsize));
                    Log.v("TAG", "开始333333333333··················");
                    break;
                }
                String xx=sb.toString();

                while(xx.length() > 0) {
                    String temp =  xx.substring(0, 4);
                    Log.v("TAG", "开始55555555··················");
//                    FileWriter fw2=new FileWriter("/mnt/sdcard/testRecord/4.txt",true);
                    FileOutputStream out = new FileOutputStream("/mnt/sdcard/testRecord/4.txt",true);
                    Log.v("TAG", "开始rrrrrr··················");
                    //将传入的参数,转换为 16 进制数
                    int target = Integer.parseInt(temp, 16);
                    int source = Integer.parseInt("8000",16);
                    Log.v("TAG", "开始yyyyyyyyyy··················");
                    if (source > target)
                    {
                        Log.v("TAG", "开始66666666666··················");
                        out.write("0".getBytes()); 
                        out.flush();
                        out.close();
//                        System.out.println(0);
                    }
                    else
                    {
                        out.write("1".getBytes()); 
                        out.flush();
                        out.close();
//                        System.out.println(1);
                    }

                    xx = xx.substring(4);

                }


                try {
                        if (fos != null)
                                fos.close();// 关闭写入流
                } catch (IOException e) {
                        e.printStackTrace();
                }
        }
加载中
0
dodojava
dodojava
抛的异常信息是什么?
还有把 temp 打出来看一下是什么?

有可能temp都不是数字的字符串
0
weng4570
weng4570
异常信息是:
0
vvtf
vvtf

哥们,你API不熟啊

数字格式化异常改怎么解决        (   //将传入的参数,转换为 16 进制数
                    int target = Integer.parseInt(temp, 16);)就是这这一行报的异常;


这不是把temp转换为16进制,这是把16进制的字符串转换为十进制数

比如temp是FF,然后Integer.parseInt(temp, 16) = 255,

比如temp是0e,然后Integer.parseInt(temp, 16) = 14

你如果要转换为16进制,就这样:

// the return hex string
Integer.toHexString(Integer.parseInt(temp, 16));

但是你这个使用后其实返回还是temp

计算机显示的数值只能显示10进制类型,

其他类型,2进制,8进制,16进制等都是以字符串形式显示。

懂否?

weng4570
weng4570
你那代码我放进去不知道怎么比较;能把我那个代码改一改发个整的代码比较的吗;谢谢
返回顶部
顶部