日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

unsigned char对应java_Java的数据类型,怎么就没有uchar呢

發(fā)布時間:2025/4/17 java 58 豆豆
生活随笔 收集整理的這篇文章主要介紹了 unsigned char对应java_Java的数据类型,怎么就没有uchar呢 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

作者:陳玨秀

真頭疼,因為java的數(shù)據(jù)類型沒有uchar。今天把之前用C寫的程序改成java的,但是由于java的數(shù)據(jù)類型中沒有uchar,部分內(nèi)容得不到相關(guān)轉(zhuǎn)換。

我想

將圖像src的像素值,然后保存為uchar?格式的數(shù)據(jù),因為uchar的取值范圍是(?0..255?)

在OpenCV中

Mat_對應(yīng)的是CV_8U,Mat_對應(yīng)的是CV_8U,Mat_對應(yīng)的是CV_8S,Mat_對應(yīng)的是CV_32S,Mat_對應(yīng)的是CV_32F,Mat_對應(yīng)的是CV_64F,對應(yīng)的數(shù)據(jù)深度如下:

? CV_8U - 8-bit unsigned integers ( 0..255 )

? CV_8S - 8-bit signed integers ( -128..127 )

? CV_16U - 16-bit unsigned integers ( 0..65535 )

在C語言中

char,類型識別符,字符型。

[signed]char?有符號字符型?長度(字節(jié))為1?-128~127

unsigned char?無符號字符型?長度(字節(jié))為1?0~255

在Java中

char?16位?范圍是2負(fù)的2的15次方到2的15次方的整數(shù)

byte 雖然是8位,但是取值范圍是負(fù)的2的7次方到2的7次方的整數(shù)

網(wǎng)上尋了相關(guān)解決方法:

在Java中,不存在Unsigned無符號數(shù)據(jù)類型,但可以輕而易舉的完成Unsigned轉(zhuǎn)換。

方案一:如果在Java中進(jìn)行流(Stream)數(shù)據(jù)處理,可以用DataInputStream類對Stream中的數(shù)據(jù)以Unsigned讀取。

Java在這方面提供了支持,可以用java.io.DataInputStream

類對象來完成對流內(nèi)數(shù)據(jù)的Unsigned讀取,該類提供了如下方法:

(1)int?readUnsignedByte

()?//從流中讀取一個0~255(0xFF)的單字節(jié)數(shù)據(jù),并以int數(shù)據(jù)類型的數(shù)據(jù)返回。返回的數(shù)據(jù)相當(dāng)于C/C++語言中所謂的“BYTE”。

(2)int readUnsignedShort ()?//從流中讀取一個0~65535(0xFFFF)的雙字節(jié)數(shù)據(jù),并以int數(shù)據(jù)類型的數(shù)據(jù)返回。返回的數(shù)據(jù)相當(dāng)于C/C++語言中所謂的“WORD”,

并且是以“低地址低字節(jié)”的方式返回的,所以程序員不需要額外的轉(zhuǎn)換。

方案二:利用Java位運(yùn)算符,完成Unsigned轉(zhuǎn)換。

正常情況下,Java提供的數(shù)據(jù)類型是有符號signed類型的,可以通過位運(yùn)算的方式得到它們相對應(yīng)的無符號值,參見幾個方法中的代碼:

public int getUnsignedByte (byte

data){?//將data字節(jié)型數(shù)據(jù)轉(zhuǎn)換為0~255 (0xFF 即BYTE)。

return data&0x0FF ;

}

public int getUnsignedByte (short

data){?//將data字節(jié)型數(shù)據(jù)轉(zhuǎn)換為0~65535 (0xFFFF 即 WORD)。

return data&0x0FFFF ;

}?public long getUnsignedIntt (int

data){?//將int數(shù)據(jù)轉(zhuǎn)換為0~4294967295 (0xFFFFFFFF即DWORD)。

return data&0x0FFFFFFFF ;

}

總結(jié)

以上是生活随笔為你收集整理的unsigned char对应java_Java的数据类型,怎么就没有uchar呢的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。