GVKun编程网logo

如何将Android中的byte []转换为C中的uint8_T数组?(android byte转string)

16

如果您想了解如何将Android中的byte[]转换为C中的uint8_T数组?的相关知识,那么本文是一篇不可错过的文章,我们将对androidbyte转string进行全面详尽的解释,并且为您提供关

如果您想了解如何将Android中的byte []转换为C中的uint8_T数组?的相关知识,那么本文是一篇不可错过的文章,我们将对android byte转string进行全面详尽的解释,并且为您提供关于& | ^ << >> 与OC枚举 字 字节 比特 word byte bit uint8_t 16 32、2022-07-30:以下go语言代码输出什么?A:[]byte{} []byte;B:[]byte{} []uint8;C:[]uint8{} []byte;D:[]uin8{} []uint8。、android – 如何将jbyteArray转换为Mat?、android – 如何将文件:// uri转换为content:// uri?的有价值的信息。

本文目录一览:

如何将Android中的byte []转换为C中的uint8_T数组?(android byte转string)

如何将Android中的byte []转换为C中的uint8_T数组?(android byte转string)

我打算通过拍照手机( Android)拍照,然后通过JNI将其传递给C功能. C函数由MATLAB Coder生成.

这是生成的C函数的标题:

real_T detection(const **uint8_T** OriginalImage[28755648])

这是图像的数据类型:

@Override
    public void onPictureTaken(**byte[] data**,Camera camera) {.....}

问题:如何将byte []转换为uint8_T数组?
我发现how to convert byte[] to jbyte * ..但我不知道如何处理uint8_T?

我只知道Java但不知道C.

问候,

解决方法

Java没有无符号整数类型,但相机并不真正关心.您可以安全地将从onPictureTaken()回调到达的字节数组转换为uint8_t *.

旁注:很可能,图片将以JPEG流形式到达.

更新:在C中实现onPictureTaken()的示例

以下是您在活动中的所在地:

mCamera = Camera.open();
mCamera.setPreviewdisplay(surfaceHolder);
mCamera.startPreview();
...
mCamera.takePicture(null,null,new android.hardware.Camera.NativePictureCallback);

这是文件src / android / hardware / Camera / NativePictureCallback.java:

package android.hardware.Camera;
class NativePictureCallback: implements PictureCallback {
  static { 
    System.loadLibrary("NativeCamera"); 
  } 
  public void native onPictureTaken(byte[] data,Camera camera);
}

这是C文件,它是libNativeCamera.so的一部分:

include <jni.h>
include <tmwtypes.h>

real_T detection(const uint8_T* OriginalImage);

JNIEXPORT void JNICALL
Java_android_hardware_Camera_NativePictureCallback_onPictureTaken(
    jnienv* env,jobject thiz,jbytearray data,jobject camera) {
  jbyte* dataPtr = (*env)->GetByteArrayElements(env,data,NULL);
  real_T res = detection((const uint8_T*)dataPtr);
  (*env)->ReleaseByteArrayElements(env,dataPtr,JNI_ABORT);
}

& | ^ << >> 与OC枚举 字 字节 比特 word byte bit uint8_t 16 32

& | ^ << >> 与OC枚举 字 字节 比特 word byte bit uint8_t 16 32

    /*
     1 1
     2 10
     3 11
     4 100
     5 101
     6 110
     7 111
     8 1000
     */
    
    
    
    
    NSLog(@"%d", 1 & 2); //01 10 -> 00 ->0
    NSLog(@"%d", 1 | 2);//01 10 ->11 ->3
    NSLog(@"%d", 1 ^ 2); //01 10 -11 ->3
    NSLog(@"%d", 1 << 1);  //00001 00010 -> 2
    NSLog(@"%d", 1 << 2); //00001 00100 ->4
    NSLog(@"%d", 2 >> 1);  //10 01 -> 1
    NSLog(@"%d", 4 >> 2); //100 -001 -> 1
    
    NSLog(@"%lu",(unsigned long)StreamEventNone); //0
    NSLog(@"%lu",(unsigned long)StreamEventOpenCompleted);//01
    NSLog(@"%lu",(unsigned long)StreamEventHasBytesAvailable);//10
    
    NSLog(@"%d %d",1 & 1, 2&2);
    NSLog(@"%d",1 & 2);
    //NSLog(@"%d",1 & 3);
    NSLog(@"%d",1 & 4);
    //因为是位移的没有3  所以&可以保证就是自己
    NSLog(@"%d",4 ^ 4); // 100 100  //不同为1 相同为为0
    NSLog(@"%d",5 ^ 5); //使得相同的值为0

    StreamEvent direction = StreamEventOpenCompleted|StreamEventHasBytesAvailable|StreamEventHasSpaceAvailable;
    
    
    if (direction & StreamEventOpenCompleted) {
        NSLog(@"StreamEventOpenCompleted");
    }
    NSLog(@"%lu",(unsigned long)direction);
    

一个字 2个字节 一个字节8位
word  = 2byte  1byte = 8bit
1字节     uint8_t
2字节     uint16_t
4字节     uint32_t
8字节     uint64_t

2022-07-30:以下go语言代码输出什么?A:[]byte{} []byte;B:[]byte{} []uint8;C:[]uint8{} []byte;D:[]uin8{} []uint8。

2022-07-30:以下go语言代码输出什么?A:[]byte{} []byte;B:[]byte{} []uint8;C:[]uint8{} []byte;D:[]uin8{} []uint8。

2022-07-30:以下go语言代码输出什么?A:[]byte{} []byte;B:[]byte{} []uint8;C:[]uint8{} []byte;D:[]uin8{} []uint8。

package main

import "fmt"

func main() {
    x := []byte{}
    fmt.Printf("%#v %T\n", x, x)
}

答案2022-07-30:

答案选 B。这是一个 bug,说正确答案应该是 []uint8{} []uint8 才对,因为 byte 是 uint8 的别名,但现在即使是 x := []uint8{},结果也还是 B。不过为了兼容性,该 bug 目前不会修复,影响不大,详见:https://github.com/golang/go/issues/44391。

在这里插入图片描述

另一道有争议的题,arp和rarp属于数据链路层还是网络层?有人说是网络层,也有人说是数据链路层。我个人倾向于数据链路层。

android – 如何将jbyteArray转换为Mat?

android – 如何将jbyteArray转换为Mat?

我想在本机代码中将byteArray转换为Mat.
从ByteArrayOutpuStream.toByteArray()返回的byteArray原来是一个.bmp图像.这意味着byteArray也有imageHeader.

在Native端我有jbyteArray存储byteArray.
现在,如何将此jbyteArray转换为Mat进行进一步处理?

我想我必须先用cv :: imdecode(?,?,?)解码它?

谢谢

解决方法

您可以将jbyteArray转换为Mat.

请参阅以下链接.

https://github.com/ethanrublee/catkin-opencv/blob/master/samples/android/tutorial-3-native/jni/jni_part.cpp

android-opencv项目有这些样本.

android – 如何将文件:// uri转换为content:// uri?

android – 如何将文件:// uri转换为content:// uri?

我发现在我的设备上,默认的媒体显示工具并没有向我展示如果我有一个uri是:
file://mnt/sdcard/DCIM/Image.jpg

当我通过内置意图选择图像时,我得到了这个:

content://media/external/images/media/247

这两个都显示相同的文件,但是当我使用第一个文件时,我没有任何共享选项.

我的问题是,如何在文件Uri中找到内容Uri?

解决方法

我正在制作文件,所以我有一个File对象文件.

所以我现在这样做是为了让文件的Uri作为“content://”Uri.

Uri capturedImage = Uri.parse(
      android.provider.MediaStore.Images.Media.insertimage(
      getContentResolver(),file.getAbsolutePath(),null,null));

有信心回答这个问题How can I capture an image in Android and have it show up in the gallery?

我们今天的关于如何将Android中的byte []转换为C中的uint8_T数组?android byte转string的分享就到这里,谢谢您的阅读,如果想了解更多关于& | ^ << >> 与OC枚举 字 字节 比特 word byte bit uint8_t 16 32、2022-07-30:以下go语言代码输出什么?A:[]byte{} []byte;B:[]byte{} []uint8;C:[]uint8{} []byte;D:[]uin8{} []uint8。、android – 如何将jbyteArray转换为Mat?、android – 如何将文件:// uri转换为content:// uri?的相关信息,可以在本站进行搜索。

本文标签: