2015-05-21 7 views
1

Я хочу отправить шестнадцатеричное сообщение устройству с контрольной суммой в java.Java hex string concatenate checksum

String msg = "\u0002\u0053\u003F\u0003"; 
    String checksum = "\u00EE"; 
    String last = "\u0004"; 
    msg = msg + checksum + last; 
    sendmessage(msg); 

Если я жестко запрограммировал контрольную сумму, как указано выше, она работает. Но если я вставляю контрольную сумму динамически, это не так. Это то, что я пробовал

String msg = "\u0002\u0053\u003F\u0003"; 
String checksum = String.format("\\u00%2X",238); // decimal 238 = Hex \u00EE 
String last = "\u0004"; 
msg = msg + checksum + last; 
sendmessage(msg) ; //getting invalid checksum because it is not inserted properly 

Любые направления, пожалуйста?

+0

... Пожалуйста, для любви к Hermaeus Mora, исправьте свои проблемы с правописанием! Это не разговор текстовых сообщений, это StackOverflow. Все вопросы и ответы должны быть написаны на хорошо написанном, понятном, правильном английском языке, с изящными мелочами, такими как предметы и статьи, и правильная капитализация («** ** ** ** ** ** отправить ** ** ** h ** ex message ... ") и отсутствующих пропущенных букв или дополнительных пробелов (" ** I ** f I hard ** [no space] ** code ... ") и правильной пунктуации (« ... это работает ** [без пробела] **, но если я ... ») и все это хорошее! –

+0

@QPaysTaxes done – user3124284

ответ

1

Синтаксис \uxxxx обрабатывается компилятором Java, это не буквально. Похоже, вы просто хотите:

String msg = "\u0002\u0053\u003F\u0003"; 
char checksum = (char)238; 
String last = "\u0004"; 
msg = msg + checksum + last; 
sendmessage(msg); 
+0

Спасибо @bkail, он решил мою проблему. Ты обалденный!! – user3124284

+0

Но будет ли это blend-- er, Unicode? –

+0

@QPaysTaxes Я подумал об этом, но в конечном итоге это до отправки сообщения. В конце концов я заключил, что String используется (неловко) для хранения байтового массива. –