有沒有「乾淨」的方法來做到以下幾點?獲取一個int的ASCII碼
byte b;
int chLen = /*for example*/ (int)(Math.random() * 10);
b = ("" + (int)(char)chLen).getBytes()[0];
此,基本上,採用int是> = 0和< 10和獲取其ASCII碼,並將其存儲到一個字節,但它看起來像有一個更好的方法。有任何想法嗎???
有沒有「乾淨」的方法來做到以下幾點?獲取一個int的ASCII碼
byte b;
int chLen = /*for example*/ (int)(Math.random() * 10);
b = ("" + (int)(char)chLen).getBytes()[0];
此,基本上,採用int是> = 0和< 10和獲取其ASCII碼,並將其存儲到一個字節,但它看起來像有一個更好的方法。有任何想法嗎???
也許你正在尋找類似n + '0'
的東西,其中n是0到9之間的int
?
如何如下:
byte[] bytes = ByteBuffer.allocate(4).putInt(chLen).array();
for (byte b : bytes) {
System.out.format("0x%x ", b);
}
這聽起來像你想從0到9,然後將其添加到「0」的隨機數,我會使用Random.nextInt(10)
得到這樣一個數字,
Random rand = new Random();
int ch = '0' + rand.nextInt(10);
System.out.printf("'%s' = %d (dec), %s (hex)%n",
String.valueOf((char) ch), ch,
Integer.toHexString(ch));
因爲它是難以調試隨機碼,我也寫了一個簡單的單元測試,
for (int ch = '0'; ch <= '9'; ch++) {
System.out.printf("'%s' = %d (dec), %s (hex)%n",
String.valueOf((char) ch), ch,
Integer.toHexString(ch));
}
輸出I s
'0' = 48 (dec), 30 (hex)
'1' = 49 (dec), 31 (hex)
'2' = 50 (dec), 32 (hex)
'3' = 51 (dec), 33 (hex)
'4' = 52 (dec), 34 (hex)
'5' = 53 (dec), 35 (hex)
'6' = 54 (dec), 36 (hex)
'7' = 55 (dec), 37 (hex)
'8' = 56 (dec), 38 (hex)
'9' = 57 (dec), 39 (hex)
:P我不知道你可以在Java中使用'printf()'。我認爲這是一個C語言的東西......儘管Java是基於C語言的,但我仍然沒有在Java中看到類似於C語言的'printf(String s,Object args)'。另外,不是'(int) (Math.random()* 10)'與Random rand = new Random()相同*精確* *; rand.nextInt(10);''我一直使用'min +(int)(Math.random()+(max - min + 1));'但我想這只是一個偏好問題。 – dylnmc
@dylnmc Java在版本(1.)中添加了格式化的printf(和String.format)5;至於使用對象而不是靜態方法,那麼 - 我想這是一個偏好問題。 –
要測試這個,你可以使用 'System.out.println(chLen); System.out.println(b); System.out.println((char)b);' 第一個和最後一個輸出應該是相同的,而中間輸入應該是不同的。 – dylnmc