🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: be.comp.programming
3 messages
3 total messages Started by Vincent De Baere Wed, 15 Dec 2004 10:48
[Java] Precision los char -> byte
#1711
Author: Vincent De Baere
Date: Wed, 15 Dec 2004 10:48
48 lines
2617 bytes
Beste allemaal

Een korte situatieschets: ik krijg een sequentie ascii of latin1 chars
door. Daar moeten twee dingen mee gebeuren: er moet een LRC op berekend
worden (wat neerkomt op een bitgewijse EXOR van alle karakters), daarna
moet ik die sequentie als een String kunnen behandelen.

In Java heb ik het probleem dat een char 2 bytes inneemt (het moet
namelijk ook unicode characters kunnen bevatten). Een omzetten van die
char naar een byte geeft dan ook een compiler error "possible los of
precision". Enig idee hoe ik dat opgelost kan krijgen?

AFAIK geeft het helemaal niets als ik die tweede byte kwijtgeraak, de
ascii-tekens passen namelijk in ��n byte. Alleen jammer dat ik de
compiler daar niet van kan overtuigen. En meestal ligt dat dan aan mij,
vandaar... .

Ik heb het geheel in c++ uitgewerkt dat is het werkende resultaat: De LRC
staat op het einde als int om testen te vereenvoudigen: indien het als een
char zou weergegeven worden en de LRC is een non-printing character, dan
heb ik het er raden naar wat de output is, want d'r komt dan helemaal
niets op mijn console. Opmerkingen op de C++ zijn meer dan welkom, dit is
zowat het eerste stukje code dat ik daarin schrijf, excuses dus voor
eventuele blunders.

#include <iostream>
#include <string>

using namespace std;

int main(){
	/* unsigned char should allow us for 8bit latin1 */
	unsigned char array[10];
	string str = "";
	int seed(0);
	int result(0);
	
	for(int i = 0; i < 10; i++){
		cout << "input char"<< endl;
		cin >> array[i];
		result = seed ^ (int)array[i];
		seed = result;
		str += array[i];
	}
	
	cout << "LRC: " << result << endl;
	cout << "String: " << str << endl;
}
Re: [Java] Precision los char -> byte
#1712
Author: Aquila
Date: Wed, 15 Dec 2004 10:56
40 lines
2150 bytes
Vincent De Baere wrote:

> Opmerkingen op de C++ zijn meer dan welkom, dit is
> zowat het eerste stukje code dat ik daarin schrijf, excuses dus voor
> eventuele blunders.
> 
> #include <iostream>
> #include <string>
> 
> using namespace std;
> 
> int main(){
> /* unsigned char should allow us for 8bit latin1 */
> unsigned char array[10];
> string str = "";

hoeft niet, strings worden standaard op "" ge�nitialiseerd

> int seed(0);
> int result(0);
> 
idem voor ints en 0

> for(int i = 0; i < 10; i++){
> cout << "input char"<< endl;
> cin >> array[i];
> result = seed ^ (int)array[i];

je hoeft niet te casten naar int want in C++ zijn int en char volledig
compatibel

> seed = result;
> str += array[i];

waarom gebruik je niet ineens die array van chars? die kan je ook outputten
en dan hoef je geen extra string te gebruiken, cout << array werkt ook...


-- 
"May the source be with you"
Re: [Java] Precision los char -> byte
#1714
Author: Vincent De Baere
Date: Wed, 15 Dec 2004 13:02
28 lines
1710 bytes
On Wed, 15 Dec 2004 11:56:55 +0100, Aquila wrote:

> Vincent De Baere wrote:


>> string str = "";
> 
> hoeft niet, strings worden standaard op "" ge�nitialiseerd

>> int seed(0);
>> int result(0);
>> 
> idem voor ints en 0

genoteerd! Ik dacht dat eigenlijk al, maar vermoedde dat het sowieso
weinig kwaad kan dat ook expliciet te initialiseren

>> for(int i = 0; i < 10; i++){
>> cout << "input char"<< endl;
>> cin >> array[i];
>> result = seed ^ (int)array[i];
> 
> je hoeft niet te casten naar int want in C++ zijn int en char volledig
> compatibel

Eveneens genoteerd! Bedankt voor de tips! 

Vincent
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads