我试图在java中写一个二进制数字类..但如果我发送一个从0开始的整数,这个数字不能正确保存.我知道问题是什么,但我无法找到解决方案.在c ++中,我使用了一个浮点而不是一个int,但在java中似乎不起作用.
import java.util.*;
class BinaryNumber {
private boolean b[];
public void setBit(int index,boolean value){
b[index]=value;
}
public boolean getBit(int index){
return b[index];
}
public void clear(){
for(int i=0;i<8;i++)
b[i]=false;
}
public BinaryNumber() {
b=new boolean[8];
for(int i=0;i<8;i++){
b[i]=false;
}
}
public void inputNumber(int a){
if(a>11111111) {
System.out.println(" Exception Number to Large Nothing Entered ");
}
else {
int number=a;
int c=7;
int digit=0;
for(int i=0;i<8;i++) {
digit=number%10;
if(digit==1){
b[c]=true;
}
else if (digit==0) {
b[c]=false;
}
else {
System.out.println(" …Run Code Online (Sandbox Code Playgroud) 我可以使用char数组通过套接字发送/接收数据,但无法找到发送结构的方法.我发现了很多文章,但是很难理解.据我所知,我们必须使用一个名为snprintf的函数来创建数据包,然后再使用其他一些函数来恢复它.请问我正在寻找一种非常可靠但简单的数据传输方式.这是我编写的一些代码,通过char数组发送
int main()
{
int listenfd = 0, connfd = 0;
struct sockaddr_in serv_addr;
char sendBuff[1025];
time_t ticks;
printf("\n\n...Server is starting up...\n\n");
listenfd = socket(AF_INET, SOCK_STREAM, 0);
memset(&serv_addr, '0', sizeof(serv_addr));
memset(sendBuff, '0', sizeof(sendBuff));
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
serv_addr.sin_port = htons(4567);
bind(listenfd, (struct sockaddr*)&serv_addr, sizeof(serv_addr));
printf("Bind successful\n");
listen(listenfd, 10);
printf("Ready: Waiting for clients\n");
while(1)
{
connfd = accept(listenfd, (struct sockaddr*)NULL, NULL);
ticks = time(NULL);
snprintf(sendBuff, sizeof(sendBuff), "%.24s\r\n", ctime(&ticks));
write(connfd, sendBuff, strlen(sendBuff));
close(connfd);
sleep(1);
}
Run Code Online (Sandbox Code Playgroud)
客户
int main(int argc, char …Run Code Online (Sandbox Code Playgroud)