I have pasted my codes in the playground in this link Go Playground - The Go Programming Language. My problem is that when I concat the string parts like this long2ComplimentHex := “\x” + completeString[0:2] + “\x” + completeString[2:4] + “\x” + completeString[4:6] + “\x” + completeString[6:8]. The \x gets counted as part of the value. I need this to enable the proper conversion into negative or positive numbers? How can I do a proper concat process to avoid this extra value ?
You should probably build your slice of bytes using strconv.ParseUint(completeString[i:i+2],16,8)
instead of trying to hack a hex literal into a string.
Hi Jeff,
I dont quite get you are you saying that I should do this long2ComplimentHex := strconv.ParseUint(completeString[0:0+2], 16, 8) ?
Something like this:
long2ComplimentByte := make([]byte,len(completeString)/2)
for i:=0;i<len(completeString);i++ {
b,err := strconv.ParseUint(completeString[i:i+2],16,8)
if err!=nil {
log.Fatalf("bad hex: %s", err)
}
long2ComplimentByte[i/2] = b
}
I tried your codes but at this line I get this error cannot use b (variable of type uint64) as type byte in assignment
It was untested code off the top of my head. Add a uint8 type conversion in the next to last line.
Hi Jeff,
Thank you for the benefits of anybody in future here is the complete snippet. I have made some changes to your codes to cater the string to just 4 first bytes.
long2ComplimentByte := make([]byte, 4)
for i := 0; i < 8; i = i + 2 {
b, err := strconv.ParseUint(completeString[i:i+2], 16, 8)
if err != nil {
log.Fatalf("bad hex: %s", err)
}
long2ComplimentByte[i/2] = uint8(b)
}
This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.