[問題] Byte Unsigned

看板java作者 (yuancheng)時間12年前 (2011/09/27 21:43), 編輯推噓1(108)
留言9則, 3人參與, 最新討論串1/1
各位先進大家好,小弟遇到一個問題相當疑惑, 想請問Java中Byte有可能可以存放大於127的值進去嗎? 今天聽了同事說可以自己寫一個function,把Byte改成Unsigned, 更改原本-128~127的值域,變成0~255的範圍, 之後再把宣告大於127的值塞入DB中... 也就是說原本byte a = (byte)128,正常來說會存入-128進去, 但我希望就是存入128進去,讀出來也是128(因為負值寫入Oracle讀取會有問題), 目前我只知道可以寫個補數function(0xff)把原本負數值改成正值, 但那不是我要的,不知道是不是真的可以更改byte的值域~ 以上,先謝謝各位了。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.146.81.191

09/27 21:53, , 1F
為何不用其他資料型別,例如 short 、 int ?
09/27 21:53, 1F

09/27 22:57, , 2F
因為byte不會有字元集不同,造成轉換錯誤的問題
09/27 22:57, 2F

09/27 23:01, , 3F
short以兩個byte儲存.須另外切割;int無法減少儲存空間
09/27 23:01, 3F

09/28 21:34, , 4F
若要儲存文字資料,那應該用 char、String
09/28 21:34, 4F

09/28 23:42, , 5F
感謝各位大大,已找到原因,varchar無法塞入負值,
09/28 23:42, 5F

09/28 23:45, , 6F
byte亦不能更改值域,若要正確讀取要用DB Raw Type
09/28 23:45, 6F

09/28 23:52, , 7F
印象中要存無號數就是用大一級的 type 存取出時再轉
09/28 23:52, 7F

09/28 23:54, , 8F
利用精確度的損失取得原本想要的無號數的值
09/28 23:54, 8F

09/28 23:54, , 9F
很鳥的方法 不過好像也只能這樣...
09/28 23:54, 9F
文章代碼(AID): #1EWTBvSa (java)