如何在c中将int转换为byte?
我想在C中把int转换成byte。 我怎样才能得到价值呢如何在c中将int转换为byte?,c,type-conversion,C,Type Conversion,我想在C中把int转换成byte。 我怎样才能得到价值呢 in Java int num = 167; byte b = num.toByte(); // -89 您可以简单地强制转换为一个字节: unsigned char b=(unsigned char)num; 请注意,如果num大于255或小于0,则C不会崩溃,只会给出错误的结果。本机C中没有诸如Byte之类的类型。尽管如果不想导入新的库,您可以创建如下类型的库: typedef unsigned char Byte 然后创建
in Java
int num = 167;
byte b = num.toByte(); // -89
您可以简单地强制转换为一个字节:
unsigned char b=(unsigned char)num;
请注意,如果
num
大于255或小于0,则C不会崩溃,只会给出错误的结果。本机C中没有诸如Byte之类的类型。尽管如果不想导入新的库,您可以创建如下类型的库:
typedef unsigned char Byte
然后创建您想要的任何变量:
int bar = 15;
Byte foo = (Byte)bar
byte
是一种java有符号整数类型,其范围为-128
到127
。
C中对应的类型是int8\t
,在
中为具有8位字节的体系结构定义。它是签名字符的别名
你可以写:
#include <stdint.h>
void f() {
int num = 167;
int8_t b = num; // or signed char b = num;
...
但是请注意,通常认为8位字节是0
到255
范围内的无符号量,对于这一范围,可以使用类型uint8\u t
或无符号字符。javabyte
是有符号类型的原因可能是该语言中没有无符号类型,但对于非本机读者来说,这是非常令人困惑的
字节
也可以定义为类型定义:
typedef unsigned char byte; // 0-255;
或
不要使用类型char
,因为默认情况下,此类型是有符号的还是无符号的都是由实现定义的。C字符串中的字符的保留类型<代码> char < /代码>,虽然许多函数实际上认为这些是无符号的:<代码> STRMP()/<代码>,在计算机科学中,从<代码> <代码>… < p>的函数中,字节被定义为原始数据的8位块。显然,Java使用了与计算机科学不同的定义
-89
不是值167
“转换为字节”167
已经适合一个字节,因此不需要转换
-89
是值167
转换为带符号2的8位补码
- C中有符号2的补码8位整数最正确的类型是
int8_t
fromstdint.h
- 从
int
到int8\t
的转换在赋值时用C隐式完成。不需要演员阵容
int num = 167;
int8_t b = num;
int8\u t b=(int8\u t)num代码>?“但是请注意,C程序员通常更喜欢将8位字节视为无符号量”,而不仅仅是C程序员。所有的计算机科学家和计算机工程师也是。显然Javabyte
是由一些特殊的雪花设计的。@Lundin:Java没有未签名的类型,我应该重新表述这一部分。编辑后,结果定义良好。“否则,如果新类型是无符号的,则通过反复加或减一个新类型中可以表示的最大值来转换该值。”直到该值在新类型的范围内。
typedef unsigned char byte; // 0-255;
typedef signed char byte; // -128-127;
int num = 167;
int8_t b = num;