• Log InLog In
  • Register
Liquid`
Team Liquid Liquipedia
EST 02:01
CET 08:01
KST 16:01
  • Home
  • Forum
  • Calendar
  • Streams
  • Liquipedia
  • Features
  • Store
  • EPT
  • TL+
  • StarCraft 2
  • Brood War
  • Smash
  • Heroes
  • Counter-Strike
  • Overwatch
  • Liquibet
  • Fantasy StarCraft
  • TLPD
  • StarCraft 2
  • Brood War
  • Blogs
Forum Sidebar
Events/Features
News
Featured News
RSL Revival - 2025 Season Finals Preview8RSL Season 3 - Playoffs Preview0RSL Season 3 - RO16 Groups C & D Preview0RSL Season 3 - RO16 Groups A & B Preview2TL.net Map Contest #21: Winners12
Community News
[BSL21] Non-Korean Championship - Starts Jan 103SC2 All-Star Invitational: Jan 17-1822Weekly Cups (Dec 22-28): Classic & MaxPax win, Percival surprises3Weekly Cups (Dec 15-21): Classic wins big, MaxPax & Clem take weeklies3ComeBackTV's documentary on Byun's Career !11
StarCraft 2
General
SC2 All-Star Invitational: Jan 17-18 Weekly Cups (Dec 22-28): Classic & MaxPax win, Percival surprises Chinese SC2 server to reopen; live all-star event in Hangzhou Starcraft 2 Zerg Coach ComeBackTV's documentary on Byun's Career !
Tourneys
uThermal 2v2 Circuit OSC Season 13 World Championship WardiTV Mondays $5,000+ WardiTV 2025 Championship $100 Prize Pool - Winter Warp Gate Masters Showdow
Strategy
Simple Questions Simple Answers
Custom Maps
Map Editor closed ?
External Content
Mutation # 507 Well Trained Mutation # 506 Warp Zone Mutation # 505 Rise From Ashes Mutation # 504 Retribution
Brood War
General
Data analysis on 70 million replays I would like to say something about StarCraft BGH Auto Balance -> http://bghmmr.eu/ Empty tournaments section on Liquipedia A cwal.gg Extension - Easily keep track of anyone
Tourneys
[BSL21] Grand Finals - Sunday 21:00 CET [BSL21] Non-Korean Championship - Starts Jan 10 [Megathread] Daily Proleagues SLON Grand Finals – Season 2
Strategy
Game Theory for Starcraft Current Meta Simple Questions, Simple Answers [G] How to get started on ladder as a new Z player
Other Games
General Games
Nintendo Switch Thread Awesome Games Done Quick 2026! General RTS Discussion Thread Beyond All Reason Elden Ring Thread
Dota 2
Official 'what is Dota anymore' discussion
League of Legends
Heroes of the Storm
Simple Questions, Simple Answers Heroes of the Storm 2.0
Hearthstone
Deck construction bug Heroes of StarCraft mini-set
TL Mafia
Vanilla Mini Mafia Mafia Game Mode Feedback/Ideas Survivor II: The Amazon Sengoku Mafia
Community
General
US Politics Mega-thread Trading/Investing Thread Russo-Ukrainian War Thread The Big Programming Thread Canadian Politics Mega-thread
Fan Clubs
White-Ra Fan Club
Media & Entertainment
Anime Discussion Thread [Manga] One Piece
Sports
2024 - 2026 Football Thread Formula 1 Discussion
World Cup 2022
Tech Support
Computer Build, Upgrade & Buying Resource Thread
TL Community
The Automated Ban List TL+ Announced
Blogs
Psychological Factors That D…
TrAiDoS
James Bond movies ranking - pa…
Topin
StarCraft improvement
iopq
GOAT of Goats list
BisuDagger
Customize Sidebar...

Website Feedback

Closed Threads



Active: 1438 users

Java help

Blogs > shmay
Post a Reply
shmay
Profile Blog Joined July 2004
United States1091 Posts
Last Edited: 2008-03-05 05:06:32
March 05 2008 05:05 GMT
#1
Copied from my Hw:

Write a method with the following signature:

public static String oneByte (int value, int byteNum)

This method take in an integer and return, as a String, the specified byte (0-3, numbered right to left) of value as a hexadecimal number.



My question: what the hell is my teacher asking? What does the 0-3 part mean?

Help! Thank you!

***
pheer
Profile Blog Joined July 2004
5392 Posts
March 05 2008 05:14 GMT
#2
I have no idea what the 0-3 part means, but you can just convert INT -> HEX using the built in functions, then convert that to a string. Maybe the 0-3 part is what makes it more than 2 lines of work?
Moderator
Raithed
Profile Blog Joined May 2007
China7078 Posts
March 05 2008 05:18 GMT
#3
0123 ?
AcrossFiveJulys
Profile Blog Joined September 2005
United States3612 Posts
March 05 2008 05:19 GMT
#4
One byte = 1 character
strings are basically a bunch of characters...

if you have something like this

word

'd' is byte 0, 'r' is byte 1, 'o' is byte 2, and 'w' is byte 3 by your teacher's convention.

so the first part is just figuring out how to locate the part of the string that the byte# corresponds to. youll have to do something like

public static String oneByte (int value, int byteNum) {
// convert integer into string
String s = ...

// get byte index
int byteIndex = (s.length() - byteNum) - 1;

// extract the character
char c = s.substring(byteIndex);

// convert into hex
int h = ...

return h;

}

i dont remember java syntax too well, been a couple years. hope this helps.
shmay
Profile Blog Joined July 2004
United States1091 Posts
Last Edited: 2008-03-05 05:27:51
March 05 2008 05:21 GMT
#5
On March 05 2008 14:14 pheer wrote:
I have no idea what the 0-3 part means, but you can just convert INT -> HEX using the built in functions, then convert that to a string. Maybe the 0-3 part is what makes it more than 2 lines of work?


We can't use stuff from the API for the hex conversion
SonuvBob
Profile Blog Joined October 2006
Aiur21550 Posts
March 05 2008 05:23 GMT
#6
On March 05 2008 14:14 pheer wrote:
I have no idea what the 0-3 part means, but you can just convert INT -> HEX using the built in functions, then convert that to a string. Maybe the 0-3 part is what makes it more than 2 lines of work?

32 bit int = 4 bytes. :p
Administrator
shmay
Profile Blog Joined July 2004
United States1091 Posts
March 05 2008 05:29 GMT
#7
oh I see. cool, thank you guys, especially across
AcrossFiveJulys
Profile Blog Joined September 2005
United States3612 Posts
March 05 2008 05:33 GMT
#8
in my post i forgot to mention that you need to turn the hex value you obtain into a string before you return it.
Macavenger
Profile Blog Joined January 2008
United States1132 Posts
Last Edited: 2008-03-05 05:57:56
March 05 2008 05:55 GMT
#9
Across is returning an int when the method signature asks for a String, though. I assume the return should be a string of either 2 characters (giving the integer value of the byte in hex) or 8 characters (giving the byte in binary). Doing it in binary is more work, although much cleaner in converting from int to String, at least for the first method that jumps out at me. I'll try to write out how I would do this for binary, since it's easier to write out:

public static String oneByte (int value, int byteNum) {

// initialize a string to store the return value in
String result = "";

// This division on value will eliminate all bytes lower than byteNum
// Equivalent to dividing a decimal number by 10^3 to get rid of the last 3 digits, for example
value = value / (256 ^ byteNum);

for ( int i = 1; i > 8; i++) {

// Taking the mod 2 of value gives us the value of the last digit
// Since mod 2 returns either a 1 or a 0, we don't need anything else in the if statement,
// but doing value % 2 == 1 might be a bit more readable
if value % 2 {

// We're finding bits from right to left, so when we get a new one,
// it needs to be put at the front of the string
result = "1" + result;
}

else {

result = "0" + result;

}

// Now that we've determined the rightmost remaining bit, we need to get rid of it to find the rest
value = value / 2;

}

// Now we've found all 8 bits and stored them in proper order, so return
return result;

}

Hopefully that syntax isn't too far off, I haven't coded in java in a while. Also hope you can read that, WTB [code] tags on TL so I can format things.

Doing it Hex would give a cleaner result, just 2 characters 0-f. The method is basically the same, except you take the modulo 16 and divide by 16 twice, and have to deal with sorting 15 = f, 10 = a etc. into the string. A big ugly case statement is the easiest way I can think of to do that off the top of my head, and I didn't want to write then, hence why I did it in binary.

Edit: looking at what you said about the API limitation again, what across did is probably fine once you convert it to a string. I read it originally as saying you couldn't convert between types for some reason, which I don't think is right now. Thus doing it via string and not my crazy math way is probably fine, but at least I had fun working this out.
AcrossFiveJulys
Profile Blog Joined September 2005
United States3612 Posts
March 05 2008 06:49 GMT
#10
lol MacAvenger overrrrrkillllll

I suppose that's a faster method than mine though since you are doing it in binary and not making API calls to convert back and forth between types.
azndsh
Profile Blog Joined August 2006
United States4447 Posts
Last Edited: 2008-03-05 07:11:50
March 05 2008 07:10 GMT
#11
I don't think anyone has posted the correct solution/interpretation.

An int is 32 bits, or 4 bytes. This can be expressed as 32 digits in binary or 8 digits in hexadecimal. For example

int a = 13371337 would be

00000000 11001100 00000111 11001001
in binary as split into 4 bytes.

or

00 CC 07 C9
in hexadecimal as split into 4 bytes

oneByte (a, 0) would return "C9"
oneByte (a, 1) would return "07"
etc.

That's what the problem is asking. It's pretty much your job to figure out how to actually calculate those return values.
shmay
Profile Blog Joined July 2004
United States1091 Posts
Last Edited: 2008-03-05 07:29:57
March 05 2008 07:21 GMT
#12
yeah, you're correct azndsh. i learned that soon after i tried implementing it. that's what i needed. ty
Macavenger
Profile Blog Joined January 2008
United States1132 Posts
March 05 2008 07:55 GMT
#13
azndsh, that's the interpretation I was working off when I designed mine. I'm pretty sure that's what both Across and I are doing, unless you see something in our code we don't Well, my code is returning the binary value "11001001" instead of "C9", but unless it specifies in the problem statement whether to return in binary or hex either should be valid.
azndsh
Profile Blog Joined August 2006
United States4447 Posts
March 05 2008 09:16 GMT
#14
the problem specifies the hex value, and also, it's probably best not to post the actual solution, but to let the person figure out the actual programming part
shmay
Profile Blog Joined July 2004
United States1091 Posts
March 05 2008 09:48 GMT
#15
Any tips on how to go about this? I converted the int to a 4 byte array, but I have no idea how to manually convert one of those bytes to hex.
shmay
Profile Blog Joined July 2004
United States1091 Posts
Last Edited: 2008-03-05 11:06:12
March 05 2008 10:00 GMT
#16
cancel the byte array, now have this:

value = ((value << (8*byteNum)) >>> 24) & 0x000000ff;

still open for hints on the hex conversion

edit: nm, I think i have it. don't worry.

got it
Cambium
Profile Blog Joined June 2004
United States16368 Posts
March 05 2008 19:29 GMT
#17
This makes perfect sense...

Since an int is 32 bits, it has 4 bytes (hence 0 - 3).

Numbered right to left means.... 3-2-1-0.

It basically asks you to take a chunk of the integer and output it in hex.
When you want something, all the universe conspires in helping you to achieve it.
Cambium
Profile Blog Joined June 2004
United States16368 Posts
Last Edited: 2008-03-05 19:46:42
March 05 2008 19:43 GMT
#18
I got held up answering some email, here's the solution... I think (I'm not gonna run it).

Pretty easy...

public static String oneByte (int value, int byteNum)
{
String binaryCode = Integer.toBinaryString(value);
int returnValue = Integer.parseInt( binaryCode.substring( (3 - byteNum) * 8, (3 - byteNum) * 8 + 7 ), 2 );
return Integer.toHexString( returnValue );
}
When you want something, all the universe conspires in helping you to achieve it.
FreeZEternal
Profile Joined January 2003
Korea (South)3396 Posts
March 05 2008 21:08 GMT
#19
public static String oneByte(int value, int byteNum){
byte[] byteHolder = new byte[4];
//Little-indian.
byteHolder[3] = (byte)((value >> 24) & 0xff);
byteHolder[2] = (byte)((value >> 16) & 0xff);
byteHolder[1] = (byte)((value >> 8) & 0xff);
byteHolder[0] = (byte)(value & 0xff);
return "0x" + Integer.toHexString(byteHolder[byteNum] & 0xff);

}
Please log in or register to reply.
Live Events Refresh
Next event in 1h 59m
[ Submit Event ]
Live Streams
Refresh
StarCraft 2
NeuroSwarm 175
StarCraft: Brood War
Zeus 306
Stork 222
Hyuk 154
Shuttle 70
ZergMaN 34
JulyZerg 25
NotJumperer 12
Bale 10
Icarus 9
Dota 2
XaKoH 539
League of Legends
JimRising 851
C9.Mang0634
Super Smash Bros
Mew2King46
Other Games
summit1g9326
singsing699
RuFF_SC2156
Organizations
Other Games
gamesdonequick28901
StarCraft 2
Blizzard YouTube
StarCraft: Brood War
BSLTrovo
sctven
[ Show 15 non-featured ]
StarCraft 2
• intothetv
• AfreecaTV YouTube
• Kozan
• IndyKCrew
• LaughNgamezSOOP
• Migwel
• sooper7s
StarCraft: Brood War
• RayReign 83
• BSLYoutube
• STPLYoutube
• ZZZeroYoutube
Dota 2
• masondota21324
League of Legends
• Scarra2472
• Stunt504
Other Games
• Shiphtur807
Upcoming Events
Replay Cast
1h 59m
Wardi Open
4h 59m
RotterdaM Event
10h 29m
Patches Events
12h 59m
PiGosaur Cup
17h 59m
OSC
1d 4h
SOOP
1d 20h
OSC
2 days
OSC
3 days
SOOP
4 days
[ Show More ]
The PondCast
5 days
Sparkling Tuna Cup
6 days
IPSL
6 days
DragOn vs Sziky
Liquipedia Results

Completed

BSL Season 21
WardiTV 2025
META Madness #9

Ongoing

C-Race Season 1
IPSL Winter 2025-26
eXTREMESLAND 2025
SL Budapest Major 2025
ESL Impact League Season 8
BLAST Rivals Fall 2025
IEM Chengdu 2025
PGL Masters Bucharest 2025

Upcoming

Escore Tournament S1: W3
BSL 21 Non-Korean Championship
CSL 2025 WINTER (S19)
Acropolis #4
IPSL Spring 2026
Bellum Gens Elite Stara Zagora 2026
HSC XXVIII
Thunderfire SC2 All-star 2025
Big Gabe Cup #3
OSC Championship Season 13
Nations Cup 2026
Underdog Cup #3
NA Kuram Kup
BLAST Open Spring 2026
ESL Pro League Season 23
ESL Pro League Season 23
PGL Cluj-Napoca 2026
IEM Kraków 2026
BLAST Bounty Winter 2026
BLAST Bounty Winter Qual
TLPD

1. ByuN
2. TY
3. Dark
4. Solar
5. Stats
6. Nerchio
7. sOs
8. soO
9. INnoVation
10. Elazer
1. Rain
2. Flash
3. EffOrt
4. Last
5. Bisu
6. Soulkey
7. Mini
8. Sharp
Sidebar Settings...

Advertising | Privacy Policy | Terms Of Use | Contact Us

Original banner artwork: Jim Warren
The contents of this webpage are copyright © 2026 TLnet. All Rights Reserved.