小编Tra*_*ggs的帖子

bmp 文件字节如何按小端排序,并给我反向的前 2 个字节?

大家都知道 BMP 文件是小端字节序的。维基百科页面说前 2 个字节必须是0x424D为了确保该文件是 BMP,但是当我从 BMP 文件获取前 2 个字节时,它给了我相反的两个字节0x4D42

我的代码:

FILE *file;
unsigned short bmpidentifier;

if((file = fopen("c://loser.bmp", "rb")) == NULL){
   perror("The problem is");
   return -1;
}

fread(&bmpidentifier, sizeof(unsigned short), 1, file);
if(bmpidentifier == 0x424D){
   printf("The file actually is a bmp file.\n");
} else{
   printf("%X\n", bmpidentifier);
   printf("The file is not a bmp file.\n");
}
Run Code Online (Sandbox Code Playgroud)

现在,BMP 文件字节如何按小端排序,并给我反转的前 2 个字节?

c bmp readfile

3
推荐指数
1
解决办法
5630
查看次数

iOS从Python datetime.isoformat()的输出创建NSDate?

我的python后端isoformat()在UTC日期时间使用该方法,这导致字符串看起来像2014-01-14T18:07:09.037000.在其他示例之后,我正在尝试从这些字符串创建NSDate(在JSON数据包中传递):

NSDateFormatter *dateFormatter = [NSDateFormatter new];
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:S"];
NSLog(@"cycle_base %@", myFields[@"cycle_base"]);
self.cycleBase = [dateFormatter dateFromString: myFields[@"cycle_base"]];
NSLog(@"cycleBase %@", self.cycleBase);
Run Code Online (Sandbox Code Playgroud)

我试过S格式字符串的部分(应该是小数秒?),但无济于事.我总是得到一个零.我究竟做错了什么?

nsdate nsdateformatter ios7

3
推荐指数
1
解决办法
599
查看次数

我可以在原型UITableViewCell中使用容器视图吗?

我在一个单元原型中有一组协作控件.我发现我想在另一个视图控制器中重用表外的同一个协作组.

所以我UIViewController在我的故事板中创建了一个新的,将所有控件移动到那里并将交互行为从我的UITableViewCell子类移动到新的子类.现在我只需要在storyboard中的原型单元格中放置一个容器视图,然后连接嵌入segue.很容易.

我不知道怎么做,是新的子视图控制器(我的新子类)将被实例化,以及如何从单元子类代码引用它?我需要将单元属性中的一些信息传递给嵌入式视图控制器.我可以在单元格中为容器视图创建一个插座,但这是视图,而不是嵌入式视图控制器.

uitableview ios uicontainerview

3
推荐指数
1
解决办法
2520
查看次数

多个或单个 BLE 服务

如果有的话,拥有多个 BLE 的价值是services什么?与只是将所有characteristics服务都放在一项服务中?

我正在从我们自己制造的(外围)设备构建一个 BLE 接口。我正在使用该STMicro BlueNRG-ms芯片。我的第一个原型使用了 9 个characteristics,在 4 个中组织得很好services。现在编写它的应用程序方面,我发现单独的服务只会创建更多UUID我必须映射的 s,并且似乎并没有真正增加任何价值。这 9 个特征都是独一无二的,所以我没有从单独的服务中获得任何真正需要的命名空间。

bluetooth-lowenergy bluetooth-peripheral

3
推荐指数
1
解决办法
2803
查看次数

Swift为默认返回值生成错误

以下代码示例很好地说明了我所追求的内容.我有一个预期返回给定类型的函数.它基于不完整的开关来做到这一点.但是如果default案件到达,我希望只是产生一个错误.而不是返回optional某人选择!然后在那时死亡的人.

func someFunc(value:UInt8) -> SomeType {
    switch value {
    case 0x00:
        return SomeType.foo()
    case 0x13:
        return SomeType.bar()
    default:
        break // BUT I WANT AN ERROR HERE
    }
}
Run Code Online (Sandbox Code Playgroud)

switch-statement swift swift2

3
推荐指数
1
解决办法
1071
查看次数

为什么我不能使用T作为前缀运算符的返回类型?

简单地探索Swift,在Observable模式的通过仪式的背景下.我想要探索的是为了语法糖而实现前缀运算符.

class Observable<T> {
    var value:T
    init(_ v:T) {
        value = v
    }
}

postfix operator &* { }

postfix func &* (arg:Observable<T>) -> T {
    return arg.value
}
Run Code Online (Sandbox Code Playgroud)

但是,编译器告诉我的-> Tuse of an undeclared type.通用版真的不能用作返回类型吗?这里还有别的东西吗?

generics prefix-operator swift

3
推荐指数
1
解决办法
37
查看次数

可以扩展Kotlin类以符合接口(如Swift类可以)吗?

在Swift中,我可以创建一个类似的协议

protocol FoobarConvertible {
    var foobar:String { get }
}
Run Code Online (Sandbox Code Playgroud)

然后使用一致的实现扩展系统中的任何类

extension String : FoobarConvertible {
    var foobar:String {
        get {
            return "foobar"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在Kotlin中,我认为接口类似于协议(?),我可以像这样声明一个

protocol FoobarConvertible {
    val foobar:String
}
Run Code Online (Sandbox Code Playgroud)

但是我从文档(这似乎是简洁的练习)中看不出来的是我如何扩展Kotlin的String类以使其符合FoobarConvertible.显然,我可以在Kotlin字符串中添加一个扩展方法

val String.foobar:String
    get() = "foobar"
Run Code Online (Sandbox Code Playgroud)

但是这不允许将字符串用作FoobarConvertible是预期类型的​​参数.

kotlin swift

3
推荐指数
1
解决办法
591
查看次数

对特征/描述符寻址和 UUID 感到困惑

我一直认为对于 BLE 外设上的每个特征/服务/描述符,都有一个唯一的 UUID。我认为 UUID 不仅描述了它提供的内容,而且还为其提供了一个独特的句柄。基本上,我认为传输层使用它来识别外围和中央之间的特定实例。

但是在使用 Android 时,我发现要具有可通知的特征,您不仅必须使用setCharacteristicNotificationAPI,还必须在规范化的 UUID ( 00002902-0000-1000-8000-00805f9b34fb)处向特征询问特定描述符,然后设置该特征的值描述符以允许适当的通知/指示。

我不明白的是,这意味着对于我的设备具有的每个可通知特征,它都有一个与该特定 UUID 关联的描述符。如果我有 5 个应通知的特征,我将有 5 个不同的描述符,但都具有相同的 UUID。那么当 Android 设备写入这些描述符之一时,它使用什么地址来指定外观相似的描述符?这一切都是在引擎盖下神奇地管理的吗?

android bluetooth-lowenergy

3
推荐指数
1
解决办法
1890
查看次数

如何在项目范围内使用 Kotlin ExperimentalUnsignedTypes (AndroidStudio)

我正在尝试@ExperimentalUnsignedTypes在我的 AndroidStudio 项目中使用 。似乎我必须把它放在几乎任何地方,所以我宁愿在项目范围内设置它。

文档

除非使用 UseExperimental 注释(例如 @UseExperimental(ExperimentalUnsignedTypes::class))或 -Xuse-experimental=kotlin.ExperimentalUnsignedTypes 编译器选项明确选择加入,否则此类 API 的使用将报告为警告。

尽职尽责地,我已经调整了我的Preferences>>Other Settings>>Kotlin Compiler

在此处输入图片说明

但是在清理/制作后我仍然收到(很多)警告。有人建议我也添加-XXLanguage:+InlineClasses到同一行。但结果是一样的。然后我注意到在同一首选项窗格的顶部它说:

在此处输入图片说明

这是我的问题吗?如果是这样,我可以在哪里调整我的应用程序设置,以便这些编译器设置有效?

kotlin android-studio kotlin-experimental

3
推荐指数
1
解决办法
1134
查看次数

以文字格式重新创建 Kotlin 字符串

给定 Kotlin 中的字符串,如何以字符串文字格式打印它?

或者以更长的形式,给定一些名为foo的方法来执行此操作,它将执行以下操作:

println("Howdy".foo()) --> "Howdy" (quotes included in the output)
println("1 line\n\tand a tab".foo()) --> "1 line\n\tand a tab"
println("\"embeded quotes\"".foo()) --> "\"embeded quotes\""
Run Code Online (Sandbox Code Playgroud)

基本上我正在尝试创建与字符串的代码形式匹配的调试输出。toString仅返回字符串,而不是在代码中重新创建它的修饰/转义。

string kotlin

3
推荐指数
1
解决办法
292
查看次数