标签: unsigned

For 循环中奇怪的 LLVM 无符号到有符号转换

我不确定这是否只发生在Apple 的 LLVM Compiler 4.0 (XCode 4.4.1)上,但我注意到以下行为:

NSUInteger currentIndex = 0;
NSUInteger sideSize = 2;

// Method A
for (NSInteger i = currentIndex-sideSize; i < currentIndex+sideSize; i++)
{
    printf("In the loop\n"); // WON'T be executed
}

// Method B
for (NSInteger i = (NSInteger)(currentIndex-sideSize); i < currentIndex+sideSize; i++)
{
    printf("In the loop\n"); // WON'T be executed
}

// Method C
for (NSInteger i = (NSInteger)(currentIndex-sideSize); i < (NSInteger)(currentIndex+sideSize); i++)
{
    printf("In the loop\n"); // WILL be executed
} …
Run Code Online (Sandbox Code Playgroud)

c++ unsigned signed for-loop llvm

0
推荐指数
1
解决办法
484
查看次数

如何在java中实现一个无符号字节,限制是大小只能是1个字节

如何在 java 中实现无符号字节,限制是大小只能是 1 个字节,即我们不能通过 And' ing with 0xFF 转换为 short 或 int

我必须通过套接字传输一个无符号字节数组,因为接收端是一种 C 代码方法,只需要一个大小为 1 字节的无符号字节数组,但是由于 Java 不支持无符号字节的概念,因此出现了问题。我们有没有办法实现这一目标。

字节 b=(字节)0xF0;甚至字节 b1=0x00;未通过套接字通道正确发送。请参阅写入服务器的方法。

public void encode(IoSession session, Object message, ProtocolEncoderOutput out) 抛出异常 {

    //lProxylogger.info("Inside ProtocolEncoderAdapter. Encoding response to client..");
    String response ;

    //lProxylogger.info("The response length in encode adapter is "+ response.length()+" Message="+response);
    byte[] responseStream; 

    response=(String) message;

    responseStream= response.getBytes("windows-1252");

    //responseStream=serialize(message);

     IoBuffer buffer = IoBuffer.allocate(responseStream.length);
    // buffer.putInt(response.length);
     //IoBuffer buffer=(IoBuffer)message;
      // buffer.putObject(message);
     System.out.println("Encoded Response:"+new String(responseStream));
     for(byte b:responseStream)
         System.out.print(b+",");
     System.out.println();
     buffer.put(responseStream);
//     lProxylogger.info("the response …
Run Code Online (Sandbox Code Playgroud)

java sockets io unsigned mina

0
推荐指数
1
解决办法
1241
查看次数

在C中,如何获得带有前导零的int?

我需要生成一个0到9999之间的引脚号;

0是重要的,因为我将使用此引脚加密某些文件,而使用'0024'加密与使用'24'加密不同

我正在使用unsigned int而且它不起作用..

是阵列的唯一方法吗?

c unsigned

0
推荐指数
1
解决办法
943
查看次数

在C中使用无符号数据类型

如何正确使用unsigned int?unsigned int sub(int num1, int num2);当用户输入a小于时,我的功能不起作用b.如果我只是使用int,我们可以期待一个否定的答案,我需要确定在减去之前哪个更大.我知道这很简单,但也许有一种方法可以使用unsigned int来避免这种情况?

例如,当a= 7和b= 4时,答案是3.000000.但当我翻转它们时,代码给了我4294967296.000000,我认为这是一个内存地址.

#include <stdio.h>

unsigned int sub(int num1,int num2){
    unsigned int diff = 0;
    diff = num1 - num2;
    return diff;
}

int main(){
    printf("sub(7,4) = %u\n", sub(7,4));
    printf("sub(4,7) = %u\n", sub(4,7));
}
Run Code Online (Sandbox Code Playgroud)

输出:

sub(7,4) = 3
sub(4,7) = 4294967293
Run Code Online (Sandbox Code Playgroud)

c int unsigned

0
推荐指数
1
解决办法
263
查看次数

std::make_unsigned 没有给出预期的结果

我有这样的事情:

template<class T>
class SomeClass {
public:
    typedef std::make_unsigned<T> unsigned_t;
    unsigned_t maxBinBitRep_ { - 1 };    
};

int main() {
    // Okay prints out 255 as expected.
    SomeClass<unsigned char>  unsignedChar;  // unsigned version
    // New to `make_unsigned<>` but should print 255.
    //std::cout << unsignedChar.maxBinBitRep << std::endl; 

    // Should be printing the same as above however it's printing: 4294967295
    SomeClass<char> signedChar;
    // same as above.
    //std::cout << signedChar.maxBinBitRep << std::endl; // signed version


    std::cout << "/nPress any key and enter to …
Run Code Online (Sandbox Code Playgroud)

c++ unsigned templates

0
推荐指数
1
解决办法
921
查看次数

Why does strlen in a if statement behave oddly?

#include <stdio.h>
#include <string.h>

int main()
{
    const char str[11]= "Hello World";
    if(-1 > strlen(str)){
        printf(str);
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

This if condition should always return false. But here it's not. But if I put strlen(str) value to another variable and compare with that, then it works as expected. What I am missing here? Is it compiler dependent or something?

c c++ unsigned strlen implicit-conversion

0
推荐指数
1
解决办法
343
查看次数

错误:从 'uint8_t* {aka unsigned char*}' 转换为 'unsigned int' 会丢失精度 [-fpermissive]

我想打印结构变量的成员元素的地址。当我尝试编译这个程序时,它给了我错误(错误:从 \xe2\x80\x98uint8_t* {aka unsigned char*}\xe2\x80\x99 转换为 \xe2\x80\x98unsigned int\xe2\x80\x99 丢失精度 [-fpermissive])。我正在使用https://www.onlinegdb.com/online_c++_compiler。注意:我使用 unsigned(ptr),否则它会给出一些 ASCII 字符。(如果我定义了指针变量 uint16_t ptr; ptr = (uint16_t )&data; 那么它也可以工作,但不适用于 uint8_t。)

\n
#include <iostream>\nusing namespace std;\n\nstruct DataSet\n{\n    char  data1;\n    int   data2;\n    char  data3;\n    short data4;\n};\n\nint main(void)\n{\n    struct DataSet data;\n\n    data.data1  = 0x11;\n    data.data2  = 0XFFFFEEEE;\n    data.data3  = 0x22;\n    data.data4  = 0xABCD;\n\n    uint8_t *ptr;\n    ptr = (uint8_t*)&data;\n\n    uint32_t totalSize = sizeof(struct DataSet);\n    \n    for(uint32_t i = 0 ; i < totalSize ; i++)\n    {\n        cout<<hex<<unsigned(ptr)<<endl;  // Here i get …
Run Code Online (Sandbox Code Playgroud)

c++ unsigned struct pointers uint8t

0
推荐指数
1
解决办法
6397
查看次数

如何将无符号字节转换为有符号字节

我正在尝试将文件中的无符号字节转换为java中的有符号字节。这是我当前从 java 文件中读取无符号字节的安排:

        ByteArrayOutputStream output = new ByteArrayOutputStream();
        for (String string : fileKeyString) {
            output.write(Integer.valueOf(string).byteValue());
        }
        return output.toByteArray();
Run Code Online (Sandbox Code Playgroud)

注意:我必须使用 Java 8,而 fileKeyString 是从文件读取时创建的字符串数组。变量字符串保存无符号字节。它输出所需的字节数组。

在将其放入 output.write 并由 .byteValue() 求值之前,我如何准确地将其从无符号字节转换为有符号字节?

我对字节没有太多经验,因此非常感谢任何帮助。

谢谢。

java unsigned signed byte type-conversion

0
推荐指数
1
解决办法
837
查看次数

C 中的无符号指针

我的一个朋友给我提出了这个问题,请我帮忙解决:运行这段代码后,指针 p 中记录的地址将是哪个?

unsigned * p = (unsigned*)1000;
p += 10;
Run Code Online (Sandbox Code Playgroud)

我刚刚继续使用 CodeBlocks 并添加到这个练习中printf("%u", p);,答案是 1040。

什么是(unsigned*)1000,什么意思?打印记住的地址的正确方法是printf("%u", p),还是需要使用另一种语法/另一种格式说明符?而且,为什么答案是 1040,而不是 1010?

主要问题,唯一给出的行是:

unsigned * p = (unsigned*)1000;
p += 10;
Run Code Online (Sandbox Code Playgroud)

基于这些,我做了一些谷歌研究,我认为获取地址的正确方法是将printf("%u", p);. 即使这是正确的并且这是正确的语法,我仍然无法理解此添加背后的过程。

c unsigned pointers memory-address

0
推荐指数
1
解决办法
160
查看次数

打印无符号长整数时出现问题

我有以下简单的程序,它读取以字符串形式给出的数字并打印它。它适用于小数字,但是当我尝试使用大小为 unsigned long 的数字(例如“18446744073709551615”)时,它不会产生预期的结果。这是我的代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void readNumbers(char* numbers, unsigned long numbers_length, unsigned long* number)
{
    char string[numbers_length + 1];
    strncpy(string, numbers + 0, numbers_length);
    *number = strtoul(string, NULL, 10);
}

int main () {

  unsigned long number;

  char* numbers = "18446744073709551615";
  unsigned long numbers_length = strlen(numbers);
  readNumbers(numbers, numbers_length, &number);
  printf("X = %lu \n", number);            // prints 4294967295

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

Edit_1:根据此站点, unsigned long 的最大值为 18446744073709551615。

Edit_2:以下代码适用于我的系统:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <limits.h> …
Run Code Online (Sandbox Code Playgroud)

c unsigned types unsigned-integer

0
推荐指数
1
解决办法
107
查看次数